From 2c3400fb4f5a22951d42f286975201bf817d7883 Mon Sep 17 00:00:00 2001 From: floppydiskette Date: Fri, 13 Sep 2024 12:58:12 +0100 Subject: wrong --- config/app.php | 34 -- config/application.cr | 24 ++ config/auth.php | 115 ------ config/authentic.cr | 11 + config/bookmarks.php | 117 ------ config/broadcasting.php | 44 --- config/cache.php | 111 ------ config/colors.cr | 4 + config/cookies.cr | 25 ++ config/cors.php | 34 -- config/database.cr | 29 ++ config/database.php | 31 -- config/domain.php | 27 -- config/email.cr | 26 ++ config/env.cr | 33 ++ config/error_handler.cr | 3 + config/filesystems.php | 76 ---- config/hashing.php | 17 - config/html_page.cr | 3 + config/log.cr | 50 +++ config/logging.php | 93 ----- config/mail.php | 125 ------- config/projects.php | 71 ---- config/queue.php | 109 ------ config/quotes.php | 957 ------------------------------------------------ config/route_helper.cr | 10 + config/sentry.php | 108 ------ config/server.cr | 65 ++++ config/services.php | 25 -- config/session.php | 201 ---------- config/view.php | 36 -- config/watch.yml | 3 + 32 files changed, 286 insertions(+), 2331 deletions(-) delete mode 100644 config/app.php create mode 100644 config/application.cr delete mode 100644 config/auth.php create mode 100644 config/authentic.cr delete mode 100644 config/bookmarks.php delete mode 100644 config/broadcasting.php delete mode 100644 config/cache.php create mode 100644 config/colors.cr create mode 100644 config/cookies.cr delete mode 100644 config/cors.php create mode 100644 config/database.cr delete mode 100644 config/database.php delete mode 100644 config/domain.php create mode 100644 config/email.cr create mode 100644 config/env.cr create mode 100644 config/error_handler.cr delete mode 100644 config/filesystems.php delete mode 100644 config/hashing.php create mode 100644 config/html_page.cr create mode 100644 config/log.cr delete mode 100644 config/logging.php delete mode 100644 config/mail.php delete mode 100644 config/projects.php delete mode 100644 config/queue.php delete mode 100644 config/quotes.php create mode 100644 config/route_helper.cr delete mode 100644 config/sentry.php create mode 100644 config/server.cr delete mode 100644 config/services.php delete mode 100644 config/session.php delete mode 100644 config/view.php create mode 100644 config/watch.yml (limited to 'config') diff --git a/config/app.php b/config/app.php deleted file mode 100644 index 72e11a5..0000000 --- a/config/app.php +++ /dev/null @@ -1,34 +0,0 @@ - env('APP_NAME', 'diskfloppy.me'), - 'version' => '2024.08.30', - 'env' => env('APP_ENV', 'production'), - 'debug' => (bool) env('APP_DEBUG', false), - 'url' => env('APP_URL', 'http://localhost'), - 'api_root' => env('API_ROOT', 'http://localhost:3000'), - - 'asset_url' => env('ASSET_URL'), - 'timezone' => 'UTC', - 'locale' => 'en', - 'fallback_locale' => 'en', - 'faker_locale' => 'en_US', - 'key' => env('APP_KEY'), - 'cipher' => 'AES-256-CBC', - 'maintenance' => [ - 'driver' => 'file', - ], - 'providers' => ServiceProvider::defaultProviders()->merge([ - App\Providers\AppServiceProvider::class, - App\Providers\AuthServiceProvider::class, - App\Providers\EventServiceProvider::class, - App\Providers\RouteServiceProvider::class, - ])->replace([ - \Illuminate\Queue\QueueServiceProvider::class => \Gecche\Multidomain\Queue\QueueServiceProvider::class, - ])->toArray(), - 'aliases' => Facade::defaultAliases()->merge([ - ])->toArray(), -]; diff --git a/config/application.cr b/config/application.cr new file mode 100644 index 0000000..c807149 --- /dev/null +++ b/config/application.cr @@ -0,0 +1,24 @@ +# This file may be used for custom Application configurations. +# It will be loaded before other config files. +# +# Read more on configuration: +# https://luckyframework.org/guides/getting-started/configuration#configuring-your-own-code + +# Use this code as an example: +# +# ``` +# module Application +# Habitat.create do +# setting support_email : String +# setting lock_with_basic_auth : Bool +# end +# end +# +# Application.configure do |settings| +# settings.support_email = "support@myapp.io" +# settings.lock_with_basic_auth = LuckyEnv.staging? +# end +# +# # In your application, call +# # `Application.settings.support_email` anywhere you need it. +# ``` diff --git a/config/auth.php b/config/auth.php deleted file mode 100644 index 9548c15..0000000 --- a/config/auth.php +++ /dev/null @@ -1,115 +0,0 @@ - [ - 'guard' => 'web', - 'passwords' => 'users', - ], - - /* - |-------------------------------------------------------------------------- - | Authentication Guards - |-------------------------------------------------------------------------- - | - | Next, you may define every authentication guard for your application. - | Of course, a great default configuration has been defined for you - | here which uses session storage and the Eloquent user provider. - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | Supported: "session" - | - */ - - 'guards' => [ - 'web' => [ - 'driver' => 'session', - 'provider' => 'users', - ], - ], - - /* - |-------------------------------------------------------------------------- - | User Providers - |-------------------------------------------------------------------------- - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | If you have multiple user tables or models you may configure multiple - | sources which represent each model / table. These sources may then - | be assigned to any extra authentication guards you have defined. - | - | Supported: "database", "eloquent" - | - */ - - 'providers' => [ - 'users' => [ - 'driver' => 'eloquent', - 'model' => App\Models\User::class, - ], - - // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', - // ], - ], - - /* - |-------------------------------------------------------------------------- - | Resetting Passwords - |-------------------------------------------------------------------------- - | - | You may specify multiple password reset configurations if you have more - | than one user table or model in the application and you want to have - | separate password reset settings based on the specific user types. - | - | The expiry time is the number of minutes that each reset token will be - | considered valid. This security feature keeps tokens short-lived so - | they have less time to be guessed. You may change this as needed. - | - | The throttle setting is the number of seconds a user must wait before - | generating more password reset tokens. This prevents the user from - | quickly generating a very large amount of password reset tokens. - | - */ - - 'passwords' => [ - 'users' => [ - 'provider' => 'users', - 'table' => 'password_reset_tokens', - 'expire' => 60, - 'throttle' => 60, - ], - ], - - /* - |-------------------------------------------------------------------------- - | Password Confirmation Timeout - |-------------------------------------------------------------------------- - | - | Here you may define the amount of seconds before a password confirmation - | times out and the user is prompted to re-enter their password via the - | confirmation screen. By default, the timeout lasts for three hours. - | - */ - - 'password_timeout' => 10800, - -]; diff --git a/config/authentic.cr b/config/authentic.cr new file mode 100644 index 0000000..b9efc31 --- /dev/null +++ b/config/authentic.cr @@ -0,0 +1,11 @@ +require "./server" + +Authentic.configure do |settings| + settings.secret_key = Lucky::Server.settings.secret_key_base + + unless LuckyEnv.production? + # This value can be between 4 and 31 + fastest_encryption_possible = 4 + settings.encryption_cost = fastest_encryption_possible + end +end diff --git a/config/bookmarks.php b/config/bookmarks.php deleted file mode 100644 index db955d5..0000000 --- a/config/bookmarks.php +++ /dev/null @@ -1,117 +0,0 @@ - "Friends' Websites", - 'bookmarks' => [ - [ - 'name' => "nick99nack", - 'url' => "http://www.nick99nack.com/", - 'description' => "Currently in the process of taking over the internet. I Totally didn't steal any of his stuff." - ], - [ - 'name' => "campos", - 'url' => "https://campos02.me/", - 'description' => "Cool brazilian dude, does programming and stuff" - ], - [ - 'name' => "Sashi", - 'url' => "https://joshuaalto.com/", - 'description' => "Site redesign #8! I'll find a website style I enjoy eventually, I swear!" - ], - [ - 'name' => "noone", - 'url' => "http://strangenessnetworks.com/", - 'description' => "Strangeness Networks, noone's website." - ], - [ - 'name' => "raf", - 'url' => "https://notashelf.dev/", - 'description' => "is a shelf" - ], - [ - 'name' => "CamK06", - 'url' => "https://starman0620.neocities.org/", - 'description' => "Now with more outdated HTML!" - ], - [ - 'name' => "HIDEN", - 'url' => "https://hiden.pw/", - 'description' => "Moar buttons!" - ], - [ - 'name' => "coco", - 'url' => "http://cocomark.neocities.org/", - 'description' => "needs to go to the brain store" - ], - [ - 'name' => "Toxidation", - 'url' => "http://toxi.pw/", - 'description' => "h (idk if this is his actual domain he has like 5)" - ], - [ - 'name' => "xproot", - 'url' => "http://xproot.pw/", - 'description' => "a random internet person on this very random planet" - ] - ] - ], - // Cool Projects - [ - 'name' => "Cool Projects", - 'bookmarks' => [ - [ - 'name' => "ToS;DR", - 'url' => "https://tosdr.org/", - 'description' => "\"I have read and agree to the Terms\" is the biggest lie on the web. They aim to fix that." - ], - [ - 'name' => "NINA", - 'url' => "https://nina.chat/", - 'description' => "Yahoo! Messenger (and soon AOL) revival" - ], - [ - 'name' => "Escargot", - 'url' => "https://escargot.chat/", - 'description' => "MSN/WLM revival" - ], - ] - ], - // Other Cool Stuff - [ - 'name' => "Other Cool Stuff", - 'bookmarks' => [ - [ - 'name' => "WinWorld", - 'url' => "http://www.winworldpc.com/", - 'description' => "WinWorld is an online museum dedicated to the preservation and sharing of vintage, abandoned, and pre-release software." - ], - [ - 'name' => "ToastyTech", - 'url' => "http://toastytech.com/", - 'description' => "Nathan's Toasty Technology Page" - ], - [ - 'name' => "Optimized for no one", - 'url' => "http://www.hoary.org/browse/", - 'description' => "Optimized for no one, but pretty much OK with . . ." - ], - [ - 'name' => "Cameron's World", - 'url' => "http://www.cameronsworld.net/", - 'description' => "A love letter to the Internet of old." - ] - ] - ], - // Miscellaneous Resources - [ - 'name' => "Miscellaneous Resources", - 'bookmarks' => [ - [ - 'name' => "Home Manager (Appendix A)", - 'url' => "https://rycee.gitlab.io/home-manager/options.html", - 'description' => "Useful list of configuration options for Home Manager." - ] - ] - ] -]; diff --git a/config/broadcasting.php b/config/broadcasting.php deleted file mode 100644 index 98a0093..0000000 --- a/config/broadcasting.php +++ /dev/null @@ -1,44 +0,0 @@ - env('BROADCAST_DRIVER', 'null'), - 'connections' => [ - 'pusher' => [ - 'driver' => 'pusher', - 'key' => env('PUSHER_APP_KEY'), - 'secret' => env('PUSHER_APP_SECRET'), - 'app_id' => env('PUSHER_APP_ID'), - 'options' => [ - 'cluster' => env('PUSHER_APP_CLUSTER'), - 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', - 'port' => env('PUSHER_PORT', 443), - 'scheme' => env('PUSHER_SCHEME', 'https'), - 'encrypted' => true, - 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', - ], - 'client_options' => [ - // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html - ], - ], - - 'ably' => [ - 'driver' => 'ably', - 'key' => env('ABLY_KEY'), - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - ], - - 'log' => [ - 'driver' => 'log', - ], - - 'null' => [ - 'driver' => 'null', - ], - - ], - -]; diff --git a/config/cache.php b/config/cache.php deleted file mode 100644 index d4171e2..0000000 --- a/config/cache.php +++ /dev/null @@ -1,111 +0,0 @@ - env('CACHE_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Cache Stores - |-------------------------------------------------------------------------- - | - | Here you may define all of the cache "stores" for your application as - | well as their drivers. You may even define multiple stores for the - | same cache driver to group types of items stored in your caches. - | - | Supported drivers: "apc", "array", "database", "file", - | "memcached", "redis", "dynamodb", "octane", "null" - | - */ - - 'stores' => [ - - 'apc' => [ - 'driver' => 'apc', - ], - - 'array' => [ - 'driver' => 'array', - 'serialize' => false, - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'cache', - 'connection' => null, - 'lock_connection' => null, - ], - - 'file' => [ - 'driver' => 'file', - 'path' => storage_path('framework/cache/data'), - 'lock_path' => storage_path('framework/cache/data'), - ], - - 'memcached' => [ - 'driver' => 'memcached', - 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), - 'sasl' => [ - env('MEMCACHED_USERNAME'), - env('MEMCACHED_PASSWORD'), - ], - 'options' => [ - // Memcached::OPT_CONNECT_TIMEOUT => 2000, - ], - 'servers' => [ - [ - 'host' => env('MEMCACHED_HOST', '127.0.0.1'), - 'port' => env('MEMCACHED_PORT', 11211), - 'weight' => 100, - ], - ], - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'cache', - 'lock_connection' => 'default', - ], - - 'dynamodb' => [ - 'driver' => 'dynamodb', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), - 'endpoint' => env('DYNAMODB_ENDPOINT'), - ], - - 'octane' => [ - 'driver' => 'octane', - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Cache Key Prefix - |-------------------------------------------------------------------------- - | - | When utilizing the APC, database, memcached, Redis, or DynamoDB cache - | stores there might be other applications using the same cache. For - | that reason, you may prefix every cache key to avoid collisions. - | - */ - - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), - -]; diff --git a/config/colors.cr b/config/colors.cr new file mode 100644 index 0000000..761ae94 --- /dev/null +++ b/config/colors.cr @@ -0,0 +1,4 @@ +# This enables the color output when in development or test +# Check out the Colorize docs for more information +# https://crystal-lang.org/api/Colorize.html +Colorize.enabled = LuckyEnv.development? || LuckyEnv.test? diff --git a/config/cookies.cr b/config/cookies.cr new file mode 100644 index 0000000..8db93eb --- /dev/null +++ b/config/cookies.cr @@ -0,0 +1,25 @@ +require "./server" + +Lucky::Session.configure do |settings| + settings.key = "_diskfloppydotme_session" +end + +Lucky::CookieJar.configure do |settings| + settings.on_set = ->(cookie : HTTP::Cookie) { + # If ForceSSLHandler is enabled, only send cookies over HTTPS + cookie.secure(Lucky::ForceSSLHandler.settings.enabled) + + # By default, don't allow reading cookies with JavaScript + cookie.http_only(true) + + # Restrict cookies to a first-party or same-site context + cookie.samesite(:lax) + + # Set all cookies to the root path by default + cookie.path("/") + + # You can set other defaults for cookies here. For example: + # + # cookie.expires(1.year.from_now).domain("mydomain.com") + } +end diff --git a/config/cors.php b/config/cors.php deleted file mode 100644 index 8a39e6d..0000000 --- a/config/cors.php +++ /dev/null @@ -1,34 +0,0 @@ - ['api/*', 'sanctum/csrf-cookie'], - - 'allowed_methods' => ['*'], - - 'allowed_origins' => ['*'], - - 'allowed_origins_patterns' => [], - - 'allowed_headers' => ['*'], - - 'exposed_headers' => [], - - 'max_age' => 0, - - 'supports_credentials' => false, - -]; diff --git a/config/database.cr b/config/database.cr new file mode 100644 index 0000000..ac60f1a --- /dev/null +++ b/config/database.cr @@ -0,0 +1,29 @@ +database_name = "diskfloppydotme_#{LuckyEnv.environment}" + +AppDatabase.configure do |settings| + if LuckyEnv.production? + settings.credentials = Avram::Credentials.parse(ENV["DATABASE_URL"]) + else + settings.credentials = Avram::Credentials.parse?(ENV["DATABASE_URL"]?) || Avram::Credentials.new( + database: database_name, + hostname: ENV["DB_HOST"]? || "localhost", + port: ENV["DB_PORT"]?.try(&.to_i) || 5432, + # Some common usernames are "postgres", "root", or your system username (run 'whoami') + username: ENV["DB_USERNAME"]? || "postgres", + # Some Postgres installations require no password. Use "" if that is the case. + password: ENV["DB_PASSWORD"]? || "postgres" + ) + end +end + +Avram.configure do |settings| + settings.database_to_migrate = AppDatabase + + # In production, allow lazy loading (N+1). + # In development and test, raise an error if you forget to preload associations + settings.lazy_load_enabled = LuckyEnv.production? + + # Always parse `Time` values with these specific formats. + # Used for both database values, and datetime input fields. + # settings.time_formats << "%F" +end diff --git a/config/database.php b/config/database.php deleted file mode 100644 index 5e2b5d4..0000000 --- a/config/database.php +++ /dev/null @@ -1,31 +0,0 @@ - env('DB_CONNECTION', 'mysql'), - - 'connections' => [ - 'mysql' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - ], - - 'migrations' => 'migrations', -]; diff --git a/config/domain.php b/config/domain.php deleted file mode 100644 index 8d5bbca..0000000 --- a/config/domain.php +++ /dev/null @@ -1,27 +0,0 @@ - '.env', - 'storage_dirs' => [ - 'app' => [ - 'public' => [ - ], - ], - 'framework' => [ - 'cache' => [ - ], - 'testing' => [ - ], - 'sessions' => [ - ], - 'views' => [ - ], - ], - 'logs' => [ - ], - ], - 'domains' => [ - 'diskfloppy.me' => 'diskfloppy.me', - 'dwiskfwoppy.me' => 'diskfloppy.me', - ], - ]; diff --git a/config/email.cr b/config/email.cr new file mode 100644 index 0000000..7c87544 --- /dev/null +++ b/config/email.cr @@ -0,0 +1,26 @@ +require "carbon_sendgrid_adapter" + +BaseEmail.configure do |settings| + if LuckyEnv.production? + # If you don't need to send emails, set the adapter to DevAdapter instead: + # + # settings.adapter = Carbon::DevAdapter.new + # + # If you do need emails, get a key from SendGrid and set an ENV variable + send_grid_key = send_grid_key_from_env + settings.adapter = Carbon::SendGridAdapter.new(api_key: send_grid_key) + elsif LuckyEnv.development? + settings.adapter = Carbon::DevAdapter.new(print_emails: true) + else + settings.adapter = Carbon::DevAdapter.new + end +end + +private def send_grid_key_from_env + ENV["SEND_GRID_KEY"]? || raise_missing_key_message +end + +private def raise_missing_key_message + puts "Missing SEND_GRID_KEY. Set the SEND_GRID_KEY env variable to 'unused' if not sending emails, or set the SEND_GRID_KEY ENV var.".colorize.red + exit(1) +end diff --git a/config/env.cr b/config/env.cr new file mode 100644 index 0000000..3f36407 --- /dev/null +++ b/config/env.cr @@ -0,0 +1,33 @@ +# Environments are managed using `LuckyEnv`. By default, development, production +# and test are supported. See +# https://luckyframework.org/guides/getting-started/configuration for details. +# +# The default environment is development unless the environment variable +# LUCKY_ENV is set. +# +# Example: +# ``` +# LuckyEnv.environment # => "development" +# LuckyEnv.development? # => true +# LuckyEnv.production? # => false +# LuckyEnv.test? # => false +# ``` +# +# New environments can be added using the `LuckyEnv.add_env` macro. +# +# Example: +# ``` +# LuckyEnv.add_env :staging +# LuckyEnv.staging? # => false +# ``` +# +# To determine whether or not a `LuckyTask` is currently running, you can use +# the `LuckyEnv.task?` predicate. +# +# Example: +# ``` +# LuckyEnv.task? # => false +# ``` + +# Add a staging environment. +# LuckyEnv.add_env :staging diff --git a/config/error_handler.cr b/config/error_handler.cr new file mode 100644 index 0000000..c6b736e --- /dev/null +++ b/config/error_handler.cr @@ -0,0 +1,3 @@ +Lucky::ErrorHandler.configure do |settings| + settings.show_debug_output = !LuckyEnv.production? +end diff --git a/config/filesystems.php b/config/filesystems.php deleted file mode 100644 index e9d9dbd..0000000 --- a/config/filesystems.php +++ /dev/null @@ -1,76 +0,0 @@ - env('FILESYSTEM_DISK', 'local'), - - /* - |-------------------------------------------------------------------------- - | Filesystem Disks - |-------------------------------------------------------------------------- - | - | Here you may configure as many filesystem "disks" as you wish, and you - | may even configure multiple disks of the same driver. Defaults have - | been set up for each driver as an example of the required values. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | - */ - - 'disks' => [ - - 'local' => [ - 'driver' => 'local', - 'root' => storage_path('app'), - 'throw' => false, - ], - - 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', - 'throw' => false, - ], - - 's3' => [ - 'driver' => 's3', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'region' => env('AWS_DEFAULT_REGION'), - 'bucket' => env('AWS_BUCKET'), - 'url' => env('AWS_URL'), - 'endpoint' => env('AWS_ENDPOINT'), - 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), - 'throw' => false, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Symbolic Links - |-------------------------------------------------------------------------- - | - | Here you may configure the symbolic links that will be created when the - | `storage:link` Artisan command is executed. The array keys should be - | the locations of the links and the values should be their targets. - | - */ - - 'links' => [ - public_path('storage') => storage_path('app/public'), - ], - -]; diff --git a/config/hashing.php b/config/hashing.php deleted file mode 100644 index eca4888..0000000 --- a/config/hashing.php +++ /dev/null @@ -1,17 +0,0 @@ - 'bcrypt', - - 'bcrypt' => [ - 'rounds' => env('BCRYPT_ROUNDS', 10), - ], - - - 'argon' => [ - 'memory' => 65536, - 'threads' => 1, - 'time' => 4, - ], -]; diff --git a/config/html_page.cr b/config/html_page.cr new file mode 100644 index 0000000..dca168e --- /dev/null +++ b/config/html_page.cr @@ -0,0 +1,3 @@ +Lucky::HTMLPage.configure do |settings| + settings.render_component_comments = !LuckyEnv.production? +end diff --git a/config/log.cr b/config/log.cr new file mode 100644 index 0000000..225d25c --- /dev/null +++ b/config/log.cr @@ -0,0 +1,50 @@ +require "file_utils" + +if LuckyEnv.test? + # Logs to `tmp/test.log` so you can see what's happening without having + # a bunch of log output in your spec results. + FileUtils.mkdir_p("tmp") + + backend = Log::IOBackend.new(File.new("tmp/test.log", mode: "w")) + backend.formatter = Lucky::PrettyLogFormatter.proc + Log.dexter.configure(:debug, backend) +elsif LuckyEnv.production? + # Lucky uses JSON in production so logs can be searched more easily + # + # If you want logs like in develpoment use 'Lucky::PrettyLogFormatter.proc'. + backend = Log::IOBackend.new + backend.formatter = Dexter::JSONLogFormatter.proc + Log.dexter.configure(:info, backend) +else + # Use a pretty formatter printing to STDOUT in development + backend = Log::IOBackend.new + backend.formatter = Lucky::PrettyLogFormatter.proc + Log.dexter.configure(:debug, backend) + DB::Log.level = :info +end + +# Lucky only logs when before/after pipes halt by redirecting, or rendering a +# response. Pipes that run without halting are not logged. +# +# If you want to log every pipe that runs, set the log level to ':info' +Lucky::ContinuedPipeLog.dexter.configure(:none) + +# Lucky only logs failed queries by default. +# +# Set the log to ':info' to log all queries +Avram::QueryLog.dexter.configure(:none) + +# Subscribe to Pulsar events to log when queries are made, +# queries fail, or save operations fail. Remove this to +# disable these log events without disabling all logging. +Avram.initialize_logging + +# Skip logging static assets requests in development +Lucky::LogHandler.configure do |settings| + if LuckyEnv.development? + settings.skip_if = ->(context : HTTP::Server::Context) { + context.request.method.downcase == "get" && + context.request.resource.starts_with?(/\/css\/|\/js\/|\/assets\/|\/favicon\.ico/) + } + end +end diff --git a/config/logging.php b/config/logging.php deleted file mode 100644 index 2da9712..0000000 --- a/config/logging.php +++ /dev/null @@ -1,93 +0,0 @@ - env('LOG_CHANNEL', 'stack'), - - 'deprecations' => [ - 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), - 'trace' => false, - ], - - 'channels' => [ - 'stack' => [ - 'driver' => 'stack', - 'channels' => ['single'], - 'ignore_exceptions' => false, - ], - - 'single' => [ - 'driver' => 'single', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'replace_placeholders' => true, - ], - - 'daily' => [ - 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => env('LOG_LEVEL', 'debug'), - 'days' => 14, - 'replace_placeholders' => true, - ], - - 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), - 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => env('LOG_LEVEL', 'critical'), - 'replace_placeholders' => true, - ], - - 'papertrail' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), - 'handler_with' => [ - 'host' => env('PAPERTRAIL_URL'), - 'port' => env('PAPERTRAIL_PORT'), - 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), - ], - 'processors' => [PsrLogMessageProcessor::class], - ], - - 'stderr' => [ - 'driver' => 'monolog', - 'level' => env('LOG_LEVEL', 'debug'), - 'handler' => StreamHandler::class, - 'formatter' => env('LOG_STDERR_FORMATTER'), - 'with' => [ - 'stream' => 'php://stderr', - ], - 'processors' => [PsrLogMessageProcessor::class], - ], - - 'syslog' => [ - 'driver' => 'syslog', - 'level' => env('LOG_LEVEL', 'debug'), - 'facility' => LOG_USER, - 'replace_placeholders' => true, - ], - - 'errorlog' => [ - 'driver' => 'errorlog', - 'level' => env('LOG_LEVEL', 'debug'), - 'replace_placeholders' => true, - ], - - 'null' => [ - 'driver' => 'monolog', - 'handler' => NullHandler::class, - ], - - 'emergency' => [ - 'path' => storage_path('logs/laravel.log'), - ], - ], - -]; diff --git a/config/mail.php b/config/mail.php deleted file mode 100644 index e652bd0..0000000 --- a/config/mail.php +++ /dev/null @@ -1,125 +0,0 @@ - env('MAIL_MAILER', 'smtp'), - - /* - |-------------------------------------------------------------------------- - | Mailer Configurations - |-------------------------------------------------------------------------- - | - | Here you may configure all of the mailers used by your application plus - | their respective settings. Several examples have been configured for - | you and you are free to add your own as your application requires. - | - | Laravel supports a variety of mail "transport" drivers to be used while - | sending an e-mail. You will specify which one you are using for your - | mailers below. You are free to add additional mailers as required. - | - | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", - | "postmark", "log", "array", "failover" - | - */ - - 'mailers' => [ - 'smtp' => [ - 'transport' => 'smtp', - 'url' => env('MAIL_URL'), - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), - 'port' => env('MAIL_PORT', 587), - 'encryption' => env('MAIL_ENCRYPTION', 'tls'), - 'username' => env('MAIL_USERNAME'), - 'password' => env('MAIL_PASSWORD'), - 'timeout' => null, - 'local_domain' => env('MAIL_EHLO_DOMAIN'), - ], - - 'ses' => [ - 'transport' => 'ses', - ], - - 'mailgun' => [ - 'transport' => 'mailgun', - // 'client' => [ - // 'timeout' => 5, - // ], - ], - - 'postmark' => [ - 'transport' => 'postmark', - // 'client' => [ - // 'timeout' => 5, - // ], - ], - - 'sendmail' => [ - 'transport' => 'sendmail', - 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), - ], - - 'log' => [ - 'transport' => 'log', - 'channel' => env('MAIL_LOG_CHANNEL'), - ], - - 'array' => [ - 'transport' => 'array', - ], - - 'failover' => [ - 'transport' => 'failover', - 'mailers' => [ - 'smtp', - 'log', - ], - ], - ], - - /* - |-------------------------------------------------------------------------- - | Global "From" Address - |-------------------------------------------------------------------------- - | - | You may wish for all e-mails sent by your application to be sent from - | the same address. Here, you may specify a name and address that is - | used globally for all e-mails that are sent by your application. - | - */ - - 'from' => [ - 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), - 'name' => env('MAIL_FROM_NAME', 'Example'), - ], - - /* - |-------------------------------------------------------------------------- - | Markdown Mail Settings - |-------------------------------------------------------------------------- - | - | If you are using Markdown based email rendering, you may configure your - | theme and component paths here, allowing you to customize the design - | of the emails. Or, you may simply stick with the Laravel defaults! - | - */ - - 'markdown' => [ - 'theme' => 'default', - - 'paths' => [ - resource_path('views/vendor/mail'), - ], - ], - -]; diff --git a/config/projects.php b/config/projects.php deleted file mode 100644 index 1c6c0f2..0000000 --- a/config/projects.php +++ /dev/null @@ -1,71 +0,0 @@ - "Websites", - 'projects' => [ - [ - 'name' => "diskfloppy.me", - 'description' => "The website you're looking at right now!", - 'url' => "https://github.com/floppydisk05/diskfloppy.me", - 'languages' => ["PHP", "CSS"] - ], - [ - 'name' => "NetDrivers", - 'description' => "Driver downloads website.", - 'url' => "https://github.com/floppydisk05/NetDrivers", - 'languages' => ["Ruby", "CSS"] - ] - ] - ], - [ - 'name' => "APIs", - 'projects' => [ - [ - 'name' => "trivia-api", - 'description' => "API to serve random trivia questions.", - 'url' => "https://github.com/floppydisk05/trivia-api", - 'languages' => ["JavaScript"] - ] - ] - ], - [ - 'name' => "Discord Bots", - 'projects' => [ - [ - 'name' => "PlexBot", - 'description' => "A basic bot to play music from the configured Plex server in a Discord voice channel.", - 'url' => "https://github.com/floppydisk05/PlexBot", - 'languages' => ["Python"] - ] - ] - ], - [ - 'name' => "Abandoned Projects", - 'projects' => [ - [ - 'name' => "website-cf", - 'description' => "Rewrite of my personal website in Adobe ColdFusion.", - 'url' => "https://github.com/floppydisk05/website-cf", - 'languages' => ["Adobe ColdFusion"] - ], - [ - 'name' => "WinBotJDA", - 'description' => "Rewrite of CamK06's WinBot using Java and DiscordJDA.", - 'url' => "https://github.com/floppydisk05/WinBotJDA", - 'languages' => ["Java"] - ], - [ - 'name' => "delayed-eject", - 'description' => "Scripts which eject the cd drive a lot to annoy nick.", - 'url' => "https://github.com/floppydisk05/delayed-eject", - 'languages' => ["Shell", "C"] - ], - [ - 'name' => "php-sound", - 'description' => "Plays a specified sound file or files on the web server when a php page is loaded.", - 'url' => "https://github.com/floppydisk05/php-sound", - 'languages' => ["PHP", "Shell"] - ] - ] - ] -]; diff --git a/config/queue.php b/config/queue.php deleted file mode 100644 index 01c6b05..0000000 --- a/config/queue.php +++ /dev/null @@ -1,109 +0,0 @@ - env('QUEUE_CONNECTION', 'sync'), - - /* - |-------------------------------------------------------------------------- - | Queue Connections - |-------------------------------------------------------------------------- - | - | Here you may configure the connection information for each server that - | is used by your application. A default configuration has been added - | for each back-end shipped with Laravel. You are free to add more. - | - | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" - | - */ - - 'connections' => [ - - 'sync' => [ - 'driver' => 'sync', - ], - - 'database' => [ - 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', - 'retry_after' => 90, - 'after_commit' => false, - ], - - 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', - 'retry_after' => 90, - 'block_for' => 0, - 'after_commit' => false, - ], - - 'sqs' => [ - 'driver' => 'sqs', - 'key' => env('AWS_ACCESS_KEY_ID'), - 'secret' => env('AWS_SECRET_ACCESS_KEY'), - 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), - 'queue' => env('SQS_QUEUE', 'default'), - 'suffix' => env('SQS_SUFFIX'), - 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), - 'after_commit' => false, - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - 'queue' => env('REDIS_QUEUE', 'default'), - 'retry_after' => 90, - 'block_for' => null, - 'after_commit' => false, - ], - - ], - - /* - |-------------------------------------------------------------------------- - | Job Batching - |-------------------------------------------------------------------------- - | - | The following options configure the database and table that store job - | batching information. These options can be updated to any database - | connection and table which has been defined by your application. - | - */ - - 'batching' => [ - 'database' => env('DB_CONNECTION', 'mysql'), - 'table' => 'job_batches', - ], - - /* - |-------------------------------------------------------------------------- - | Failed Queue Jobs - |-------------------------------------------------------------------------- - | - | These options configure the behavior of failed queue job logging so you - | can control which database and table are used to store the jobs that - | have failed. You may change them to any database / table you wish. - | - */ - - 'failed' => [ - 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), - 'database' => env('DB_CONNECTION', 'mysql'), - 'table' => 'failed_jobs', - ], - -]; diff --git a/config/quotes.php b/config/quotes.php deleted file mode 100644 index 9bfd8ad..0000000 --- a/config/quotes.php +++ /dev/null @@ -1,957 +0,0 @@ - [ - [ - "lines" => [ - [ - "character" => "EDA", - "line" => "Ahh sure. Spare us." - ], - [ - "character" => "LILITH", - "line" => "Woe to us whose fates are sealed." - ] - ], - "attribution" => "The Owl House, S1E11" - ], - [ - "lines" => [ - [ - "character" => "EDA", - "line" => "Hey freeloaders! Guess what today is!" - ] - ], - "attribution" => "The Owl House, S1E12" - ], - [ - "lines" => [ - [ - "character" => "EDA", - "line" => "Quitting! It's like trying, but easier!" - ] - ], - "attribution" => "The Owl House, S1E13" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Can it, Fangs! You don't know diddly-dang about squiddly-squat!" - ] - ], - "attribution" => "The Owl House, S1E13" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Holy bones, you poofed it! Call the cops, this guy's crazy!" - ] - ], - "attribution" => "The Owl House, S1E14" - ], - [ - "lines" => [ - [ - "character" => "EDA", - "line" => "There is one way, but it's terribly dangerous and partially illegal." - ] - ], - "attribution" => "The Owl House, S1E15" - ], - [ - "lines" => [ - [ - "character" => "GUS CLONE", - "line" => "I'd rather die than expose my secrets!" - ], - [ - "character" => "GUS", - "line" => "Then die, you shall!" - ] - ], - "attribution" => "The Owl House, S1E15" - ], - [ - "lines" => [ - [ - "character" => "LUZ", - "line" => "Vee, you're giving up too quick!" - ], - [ - "character" => "VEE", - "line" => "I'm being realistic." - ] - ], - "attribution" => "The Owl House, S2E10" - ], - [ - "lines" => [ - [ - "character" => "LUZ", - "line" => "I have questions about that name..." - ], - [ - "character" => "LILITH", - "line" => "And I have questions about my life!" - ] - ], - "attribution" => "The Owl House, S2E12" - ], - [ - "lines" => [ - [ - "character" => "EMIRA", - "line" => "We can shout as loud as we want, but money always shouts louder." - ] - ], - "attribution" => "The Owl House, S2E20" - ], - [ - "lines" => [ - [ - "character" => "VEE", - "line" => "Uhh, no, I'm new in town, I just have one of those faces! But, ju-just one, the normal amount of face." - ] - ], - "attribution" => "The Owl House, S3E01" - ], - [ - "lines" => [ - [ - "character" => "RAINE", - "line" => "You Know I Hate These Things. Talking To People. Waving To People. People." - ] - ], - "attribution" => "The Owl House, S2E11" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Who dares intrude upon I, the King of Demons?!" - ] - ], - "attribution" => "The Owl House, S1E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Soon, Mr. Ducky, we shall drink the fear of those who mocked us." - ] - ], - "attribution" => "The Owl House, S1E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Try to catch me when I’m covered in grease! I'm a squirmy little fella." - ] - ], - "attribution" => "The Owl House, S1E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "My crown! Yes, yes! I can feel my powers returning! You, there. Nightmare critter. I shall call you Francois, and you shall be a minion in my army of darkness. Ha‐ha!" - ] - ], - "attribution" => "The Owl House, S1E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Weh?" - ] - ], - "attribution" => "The Owl House, S1E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "That was actually one of her better breakups!" - ] - ], - "attribution" => "The Owl House, S1E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I AM NOT YOUR CUTIE-PIE!!!" - ] - ], - "attribution" => "The Owl House, S1E2" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Ha! Good luck. The Boiling Isles is nothing but a cesspool of despair." - ] - ], - "attribution" => "The Owl House, S1E2" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "You should run a small business of more scones into my mouth." - ] - ], - "attribution" => "The Owl House, S1E2" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Finally, all that mean-spirited laughter made me sleepy." - ] - ], - "attribution" => "The Owl House, S1E2" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Less talky, more nappy." - ] - ], - "attribution" => "The Owl House, S1E2" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Can't mistake her smell. Like lemons and young, naïve confidence." - ] - ], - "attribution" => "The Owl House, S1E2" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I have no son! Eat salt!" - ] - ], - "attribution" => "The Owl House, S1E3" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Even demons have inner demons." - ] - ], - "attribution" => "The Owl House, S1E4" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Look, now we're boo-boo buddies!" - ] - ], - "attribution" => "The Owl House, S1E4" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Bap!" - ] - ], - "attribution" => "The Owl House, S1E4" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Remember when her head got cut off last week? That woman can survive anything. She's probably just tired from staying up all night chasing shrews and voles." - ] - ], - "attribution" => "The Owl House, S1E4" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "That voice. That horrific voice!!!" - ] - ], - "attribution" => "The Owl House, S1E4" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Show me the picture! Hah! I can draw better than that. You know, they once called me the King of Artists." - ] - ], - "attribution" => "The Owl House, S1E5" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Are you bestowing gifts upon me? Yes! I accept your offering! The King of Demons is back!" - ] - ], - "attribution" => "The Owl House, S1E5" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Cupcakes in my tummy-tum makes the King say yummy-yum!" - ] - ], - "attribution" => "The Owl House, S1E5" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Mmm? Oh, yeah. No." - ] - ], - "attribution" => "The Owl House, S1E5" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I'm stealing everything that's not nailed down!" - ] - ], - "attribution" => "The Owl House, S1E6" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "King? Who's King? I go by Little Bone Boy now." - ] - ], - "attribution" => "The Owl House, S1E6" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Rivals are meant to be annihilated not befriended. Now keep reading. I've been sucked into your awful fandom." - ] - ], - "attribution" => "The Owl House, S1E7" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "What does Luz know about problems anyway? All she has is dumb teen drama! She doesn't understand how hard some of us have it." - ] - ], - "attribution" => "The Owl House, S1E8" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Well, I don't know if you realized, but I'm not a baby!" - ] - ], - "attribution" => "The Owl House, S1E8" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "My life is a living nightmare!" - ] - ], - "attribution" => "The Owl House, S1E8" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Fight to the death!" - ] - ], - "attribution" => "The Owl House, S1E8" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I've got some... very confusing emotions right now." - ] - ], - "attribution" => "The Owl House, S1E8" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "All right, you acne‐encrusted hormone buckets. Let's go let out some teen angst!" - ] - ], - "attribution" => "The Owl House, S1E8" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Ooh! Fight, fight, fight!" - ] - ], - "attribution" => "The Owl House, S1E9" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Yes! Yes! This is a throne worthy of a tyrant. Bow to me you snotty underlings. Bow!" - ] - ], - "attribution" => "The Owl House, S1E10" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "*Rage squeals*" - ] - ], - "attribution" => "The Owl House, S1E10" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Hey you scum! Which one of you wants to read my literary masterpiece? Anyone brave enough?" - ] - ], - "attribution" => "The Owl House, S1E11" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I've always wanted a people chair! I'm in! This will be my first step in my reclamation of power!" - ] - ], - "attribution" => "The Owl House, S1E11" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I'm sorry, my lawyer advised me not to look at unsolicited work." - ] - ], - "attribution" => "The Owl House, S1E11" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "What's a book? Good night!" - ] - ], - "attribution" => "The Owl House, S1E11" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Hey! Less ready, more scratchy!" - ] - ], - "attribution" => "The Owl House, S1E12" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Military discipline, cooking! Ha, I truly am a demon for all seasons! Just a dash of Eda's secret sauce and I'm the creator of life!" - ] - ], - "attribution" => "The Owl House, S1E12" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "This day shall live in infamy." - ] - ], - "attribution" => "The Owl House, S1E12" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Obedience? Well, what is a teacher if not an authority figure? A king of children, if you will. Yes! I am your teacher! You may call me Mr. King!" - ] - ], - "attribution" => "The Owl House, S1E13" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Assume a coefficient of ten, carry the two, solve for Y, and that is the way to steal a pie from a windowsill! Also you can eat trash." - ] - ], - "attribution" => "The Owl House, S1E13" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Alright. Read chapters three to five on the right way to scratch yourself in public. Spoiler alert: There's no wrong way! Ah, days like these make being a teacher all worth it." - ] - ], - "attribution" => "The Owl House, S1E13" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Oh dear, I've gotten a tube stuck on my nose! Will I ever eat again? Looks like I'm toast!" - ] - ], - "attribution" => "The Owl House, S1E14" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "The King of Demons misses nobody! I wouldn't care if she came through this door right now!" - ] - ], - "attribution" => "The Owl House, S1E14" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Beat up the man and steal his things for me!" - ] - ], - "attribution" => "The Owl House, S1E14" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I'm gonna bake that kid into a pie!" - ] - ], - "attribution" => "The Owl House, S1E15" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Senseless violence. Yes, attack! DEATH IS YOUR GOD!" - ] - ], - "attribution" => "The Owl House, S1E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I FORGE MY OWN PATH!" - ] - ], - "attribution" => "The Owl House, S1E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Why am I doing this? I don't even wear clothes!" - ] - ], - "attribution" => "The Owl House, S1E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Ha! What possible regrets could come from the internet? Oh, did you know the earth is actually flat!" - ] - ], - "attribution" => "The Owl House, S1E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "We're going to turn this blood-bath into a fun-bath!" - ] - ], - "attribution" => "The Owl House, S1E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Girl, you can pull off anything! Up top! We're style geniuses!" - ] - ], - "attribution" => "The Owl House, S1E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Now I am king and queen! Best of both things!" - ] - ], - "attribution" => "The Owl House, S1E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Yes! Now I’ll strike fear into my enemies with this armor of intimidation." - ] - ], - "attribution" => "The Owl House, S1E17" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "You know what, when she first got here, I thought we were gonna eat her. But now I only think of that, like, sometimes." - ] - ], - "attribution" => "The Owl House, S1E18" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "The cake is me!" - ] - ], - "attribution" => "The Owl House, S1E18" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Me and Eda don't always see eye to eye, but I do consider her family. I want her back as much as you do." - ] - ], - "attribution" => "The Owl House, S1E19" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "We'll have to do something so diabolical, so criminally insane, that they'll have to send us to the Conformatorium." - ] - ], - "attribution" => "The Owl House, S1E19" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I'm never letting you go! You're never returning to the human realm!" - ] - ], - "attribution" => "The Owl House, S2E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "King want a cracker!" - ] - ], - "attribution" => "The Owl House, S2E1" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Weh? Yeah yeah, I'll deal with it. No one ever said power came with responsibility..." - ] - ], - "attribution" => "The Owl - - House, S2E2" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "The King of Demons yields to no one!" - ] - ], - "attribution" => "The Owl House, S2E3" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Ah, the chamber where I would devour the hearts of my foes. The taste was cold and bitter, but I bet yours would be sweet, Luz." - ] - ], - "attribution" => "The Owl House, S2E3" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Is that a six-footed pig or a floating appendage? Why, no! It's Gus the Illusion Master. Please leave a message." - ] - ], - "attribution" => "The Owl House, S2E5" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "And weh, and weh, and weh, and weh, and weh, and weh, and weh, and weh!" - ] - ], - "attribution" => "The Owl House, S2E7" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Haha! Saint Epiderm? More like Stank Epiderm!" - ] - ], - "attribution" => "The Owl House, S2E7" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "DID YOU OWL PELLET ME?!" - ] - ], - "attribution" => "The Owl House, S2E8" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "You look like one of my hairballs. Let's just do the trench coat thing!" - ] - ], - "attribution" => "The Owl House, S2E9" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Guess minecart chases are a lot more dangerous than video games make'em seem." - ] - ], - "attribution" => "The Owl House, S2E9" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "I can't wait to eat HUMAN snacks!" - ] - ], - "attribution" => "The Owl House, S2E10" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "It was the... yeast I could do." - ] - ], - "attribution" => "The Owl House, S2E11" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "With my love of mayhem and Hooty’s desperate need for attention, this’ll be a cake walk!" - ] - ], - "attribution" => "The Owl House, S2E11" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Hey, Eda, look! \"Dear sister, join the Emperor's Coven and together, we can become gods!\"" - ] - ], - "attribution" => "The Owl House, S2E12" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Ooh! That'll work great when birds try to fly away with me." - ] - ], - "attribution" => "The Owl House, S2E14" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "What you need is a healthy distractions from your problems. Like breakfast!" - ] - ], - "attribution" => "The Owl House, S2E14" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Is this thing on? Demon King to Luzura, you copy?" - ] - ], - "attribution" => "The Owl House, S2E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "Uh, oh. Uh... Hable más lento, por favor." - ] - ], - "attribution" => "The Owl House, S2E16" - ], - [ - "lines" => [ - [ - "character" => "KING", - "line" => "The Collector is just a little kid. A scary, powerful one, but… also… sad, and alone. I don’t know, this whole time, I was scared of making him mad, but… I think I can relate to him." - ] - ], - "attribution" => "The Owl House, S3E1" - ] - ], - "neversaid" => [ - [ - "name" => "ASM", - "quote" => "The Director liked all the props we got today." - ], - [ - "name" => "PM", - "quote" => "Ah ha, a revolve. Terrific." - ], - [ - "name" => "Chippie", - "quote" => "I don't know, let's look at the ground plan." - ], - [ - "name" => "Set Designer", - "quote" => "Well, let's just have whatever is cheaper." - ], - [ - "name" => "Sound", - "quote" => "Better turn that down a bit. We don't want to deafen them." - ], - [ - "name" => "Director", - "quote" => "Sorry, my mistake." - ], - [ - "name" => "Electrics", - "quote" => "This equipment is more complicated than we need." - ], - [ - "name" => "Performer", - "quote" => "I really think my big scene should be cut." - ], - [ - "name" => "SM", - "quote" => "Can we do that scene change again please?" - ], - [ - "name" => "LX designer", - "quote" => "Bit more light from those big chaps at the side. Yes that's right, the ones on stalks whatever they are called." - ], - [ - "name" => "Electrics", - "quote" => "All the equipment works perfectly." - ], - [ - "name" => "Musicians", - "quote" => "So what if that's the end of a call. Let's just finish this bit off." - ], - [ - "name" => "Wardrobe", - "quote" => "Now, when exactly is the first dress rehearsal?" - ], - [ - "name" => "Workshop", - "quote" => "I don't want anyone to know, but if you insist then yes, I admit it, I have just done an all-nighter." - ], - [ - "name" => "Performer", - "quote" => "This costume is so comfortable." - ], - [ - "name" => "Admin", - "quote" => "The level of overtime payments here are simply unacceptable. Our backstage staff deserve better." - ], - [ - "name" => "Box Office", - "quote" => "Comps? No problem." - ], - [ - "name" => "Set Designer", - "quote" => "You're right, it looks dreadful." - ], - [ - "name" => "Flyman", - "quote" => "No, my lips are sealed. What I may or may not have seen remains a secret." - ], - [ - "name" => "Electrics", - "quote" => "That had nothing to do with the computer, it was my fault." - ], - [ - "name" => "Crew", - "quote" => "No, no, I'm sure that's our job." - ], - [ - "name" => "SMgt", - "quote" => "Thanks, but I don't drink." - ], - [ - "name" => "Performer", - "quote" => "Let me stand down here with my back to the audience." - ], - [ - "name" => "Chippie", - "quote" => "I can't really manage those big fast power tools myself." - ], - [ - "name" => "Chippie", - "quote" => "I prefer to use these little hand drills." - ], - [ - "name" => "All", - "quote" => "Let's go and ask the Production Manager. He'll know." - ] - ] -]; diff --git a/config/route_helper.cr b/config/route_helper.cr new file mode 100644 index 0000000..ede1f32 --- /dev/null +++ b/config/route_helper.cr @@ -0,0 +1,10 @@ +# This is used when generating URLs for your application +Lucky::RouteHelper.configure do |settings| + if LuckyEnv.production? + # Example: https://my_app.com + settings.base_uri = ENV.fetch("APP_DOMAIN") + else + # Set domain to the default host/port in development/test + settings.base_uri = "http://localhost:#{Lucky::ServerSettings.port}" + end +end diff --git a/config/sentry.php b/config/sentry.php deleted file mode 100644 index 2421325..0000000 --- a/config/sentry.php +++ /dev/null @@ -1,108 +0,0 @@ - env('SENTRY_LARAVEL_DSN', env('SENTRY_DSN')), - - // The release version of your application - // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')) - 'release' => env('SENTRY_RELEASE'), - - // When left empty or `null` the Laravel environment will be used (usually discovered from `APP_ENV` in your `.env`) - 'environment' => env('SENTRY_ENVIRONMENT'), - - // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#sample-rate - 'sample_rate' => env('SENTRY_SAMPLE_RATE') === null ? 1.0 : (float)env('SENTRY_SAMPLE_RATE'), - - // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#traces-sample-rate - 'traces_sample_rate' => env('SENTRY_TRACES_SAMPLE_RATE') === null ? null : (float)env('SENTRY_TRACES_SAMPLE_RATE'), - - // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#profiles-sample-rate - 'profiles_sample_rate' => env('SENTRY_PROFILES_SAMPLE_RATE') === null ? null : (float)env('SENTRY_PROFILES_SAMPLE_RATE'), - - // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#send-default-pii - 'send_default_pii' => env('SENTRY_SEND_DEFAULT_PII', false), - - // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#ignore-exceptions - // 'ignore_exceptions' => [], - - // @see: https://docs.sentry.io/platforms/php/guides/laravel/configuration/options/#ignore-transactions - // 'ignore_transactions' => [], - - // Breadcrumb specific configuration - 'breadcrumbs' => [ - // Capture Laravel logs as breadcrumbs - 'logs' => env('SENTRY_BREADCRUMBS_LOGS_ENABLED', true), - - // Capture Laravel cache events (hits, writes etc.) as breadcrumbs - 'cache' => env('SENTRY_BREADCRUMBS_CACHE_ENABLED', true), - - // Capture Livewire components like routes as breadcrumbs - 'livewire' => env('SENTRY_BREADCRUMBS_LIVEWIRE_ENABLED', true), - - // Capture SQL queries as breadcrumbs - 'sql_queries' => env('SENTRY_BREADCRUMBS_SQL_QUERIES_ENABLED', true), - - // Capture SQL query bindings (parameters) in SQL query breadcrumbs - 'sql_bindings' => env('SENTRY_BREADCRUMBS_SQL_BINDINGS_ENABLED', false), - - // Capture queue job information as breadcrumbs - 'queue_info' => env('SENTRY_BREADCRUMBS_QUEUE_INFO_ENABLED', true), - - // Capture command information as breadcrumbs - 'command_info' => env('SENTRY_BREADCRUMBS_COMMAND_JOBS_ENABLED', true), - - // Capture HTTP client request information as breadcrumbs - 'http_client_requests' => env('SENTRY_BREADCRUMBS_HTTP_CLIENT_REQUESTS_ENABLED', true), - ], - - // Performance monitoring specific configuration - 'tracing' => [ - // Trace queue jobs as their own transactions (this enables tracing for queue jobs) - 'queue_job_transactions' => env('SENTRY_TRACE_QUEUE_ENABLED', false), - - // Capture queue jobs as spans when executed on the sync driver - 'queue_jobs' => env('SENTRY_TRACE_QUEUE_JOBS_ENABLED', true), - - // Capture SQL queries as spans - 'sql_queries' => env('SENTRY_TRACE_SQL_QUERIES_ENABLED', true), - - // Capture SQL query bindings (parameters) in SQL query spans - 'sql_bindings' => env('SENTRY_TRACE_SQL_BINDINGS_ENABLED', false), - - // Capture where the SQL query originated from on the SQL query spans - 'sql_origin' => env('SENTRY_TRACE_SQL_ORIGIN_ENABLED', true), - - // Capture views rendered as spans - 'views' => env('SENTRY_TRACE_VIEWS_ENABLED', true), - - // Capture Livewire components as spans - 'livewire' => env('SENTRY_TRACE_LIVEWIRE_ENABLED', true), - - // Capture HTTP client requests as spans - 'http_client_requests' => env('SENTRY_TRACE_HTTP_CLIENT_REQUESTS_ENABLED', true), - - // Capture Redis operations as spans (this enables Redis events in Laravel) - 'redis_commands' => env('SENTRY_TRACE_REDIS_COMMANDS', false), - - // Capture where the Redis command originated from on the Redis command spans - 'redis_origin' => env('SENTRY_TRACE_REDIS_ORIGIN_ENABLED', true), - - // Enable tracing for requests without a matching route (404's) - 'missing_routes' => env('SENTRY_TRACE_MISSING_ROUTES_ENABLED', false), - - // Configures if the performance trace should continue after the response has been sent to the user until the application terminates - // This is required to capture any spans that are created after the response has been sent like queue jobs dispatched using `dispatch(...)->afterResponse()` for example - 'continue_after_response' => env('SENTRY_TRACE_CONTINUE_AFTER_RESPONSE', true), - - // Enable the tracing integrations supplied by Sentry (recommended) - 'default_integrations' => env('SENTRY_TRACE_DEFAULT_INTEGRATIONS_ENABLED', true), - ], - -]; diff --git a/config/server.cr b/config/server.cr new file mode 100644 index 0000000..8ed58de --- /dev/null +++ b/config/server.cr @@ -0,0 +1,65 @@ +# Here is where you configure the Lucky server +# +# Look at config/route_helper.cr if you want to change the domain used when +# generating links with `Action.url`. +Lucky::Server.configure do |settings| + if LuckyEnv.production? + settings.secret_key_base = secret_key_from_env + settings.host = "0.0.0.0" + settings.port = ENV["PORT"].to_i + settings.gzip_enabled = true + # By default certain content types will be gzipped. + # For a full list look in + # https://github.com/luckyframework/lucky/blob/main/src/lucky/server.cr + # To add additional extensions do something like this: + # settings.gzip_content_types << "content/type" + else + settings.secret_key_base = "ldNN2xc+lugplW75tBMdqikv+4ssY4v7bwdTx1FmK0U=" + # Change host/port in config/watch.yml + # Alternatively, you can set the DEV_PORT env to set the port for local development + settings.host = Lucky::ServerSettings.host + settings.port = Lucky::ServerSettings.port + end + + # By default Lucky will serve static assets in development and production. + # + # However you could use a CDN when in production like this: + # + # Lucky::Server.configure do |settings| + # if LuckyEnv.production? + # settings.asset_host = "https://mycdnhost.com" + # else + # settings.asset_host = "" + # end + # end + settings.asset_host = "" # Lucky will serve assets +end + +Lucky::ForceSSLHandler.configure do |settings| + # To force SSL in production, uncomment the lines below. + # This will cause http requests to be redirected to https: + # + # settings.enabled = LuckyEnv.production? + # settings.strict_transport_security = {max_age: 1.year, include_subdomains: true} + # + # Or, leave it disabled: + settings.enabled = false +end + +# Set a unique ID for each HTTP request. +# To enable the request ID, uncomment the lines below. +# You can set your own custom String, or use a random UUID. +# Lucky::RequestIdHandler.configure do |settings| +# settings.set_request_id = ->(context : HTTP::Server::Context) { +# UUID.random.to_s +# } +# end + +private def secret_key_from_env + ENV["SECRET_KEY_BASE"]? || raise_missing_secret_key_in_production +end + +private def raise_missing_secret_key_in_production + puts "Please set the SECRET_KEY_BASE environment variable. You can generate a secret key with 'lucky gen.secret_key'".colorize.red + exit(1) +end diff --git a/config/services.php b/config/services.php deleted file mode 100644 index aaad053..0000000 --- a/config/services.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - 'key' => env('LASTFM_KEY'), - 'user' => env('LASTFM_USER'), - ], - 'lanyard' => [ - 'user_id' => env('DISCORD_USER_ID'), - ], - 'weatherlink' => env('WEATHERLINK_IP') -]; diff --git a/config/session.php b/config/session.php deleted file mode 100644 index 8fed97c..0000000 --- a/config/session.php +++ /dev/null @@ -1,201 +0,0 @@ - env('SESSION_DRIVER', 'file'), - - /* - |-------------------------------------------------------------------------- - | Session Lifetime - |-------------------------------------------------------------------------- - | - | Here you may specify the number of minutes that you wish the session - | to be allowed to remain idle before it expires. If you want them - | to immediately expire on the browser closing, set that option. - | - */ - - 'lifetime' => env('SESSION_LIFETIME', 120), - - 'expire_on_close' => false, - - /* - |-------------------------------------------------------------------------- - | Session Encryption - |-------------------------------------------------------------------------- - | - | This option allows you to easily specify that all of your session data - | should be encrypted before it is stored. All encryption will be run - | automatically by Laravel and you can use the Session like normal. - | - */ - - 'encrypt' => false, - - /* - |-------------------------------------------------------------------------- - | Session File Location - |-------------------------------------------------------------------------- - | - | When using the native session driver, we need a location where session - | files may be stored. A default has been set for you but a different - | location may be specified. This is only needed for file sessions. - | - */ - - 'files' => storage_path('framework/sessions'), - - /* - |-------------------------------------------------------------------------- - | Session Database Connection - |-------------------------------------------------------------------------- - | - | When using the "database" or "redis" session drivers, you may specify a - | connection that should be used to manage these sessions. This should - | correspond to a connection in your database configuration options. - | - */ - - 'connection' => env('SESSION_CONNECTION'), - - /* - |-------------------------------------------------------------------------- - | Session Database Table - |-------------------------------------------------------------------------- - | - | When using the "database" session driver, you may specify the table we - | should use to manage the sessions. Of course, a sensible default is - | provided for you; however, you are free to change this as needed. - | - */ - - 'table' => 'sessions', - - /* - |-------------------------------------------------------------------------- - | Session Cache Store - |-------------------------------------------------------------------------- - | - | While using one of the framework's cache driven session backends you may - | list a cache store that should be used for these sessions. This value - | must match with one of the application's configured cache "stores". - | - | Affects: "apc", "dynamodb", "memcached", "redis" - | - */ - - 'store' => env('SESSION_STORE'), - - /* - |-------------------------------------------------------------------------- - | Session Sweeping Lottery - |-------------------------------------------------------------------------- - | - | Some session drivers must manually sweep their storage location to get - | rid of old sessions from storage. Here are the chances that it will - | happen on a given request. By default, the odds are 2 out of 100. - | - */ - - 'lottery' => [2, 100], - - /* - |-------------------------------------------------------------------------- - | Session Cookie Name - |-------------------------------------------------------------------------- - | - | Here you may change the name of the cookie used to identify a session - | instance by ID. The name specified here will get used every time a - | new session cookie is created by the framework for every driver. - | - */ - - 'cookie' => env( - 'SESSION_COOKIE', - Str::slug(env('APP_NAME', 'laravel'), '_').'_session' - ), - - /* - |-------------------------------------------------------------------------- - | Session Cookie Path - |-------------------------------------------------------------------------- - | - | The session cookie path determines the path for which the cookie will - | be regarded as available. Typically, this will be the root path of - | your application but you are free to change this when necessary. - | - */ - - 'path' => '/', - - /* - |-------------------------------------------------------------------------- - | Session Cookie Domain - |-------------------------------------------------------------------------- - | - | Here you may change the domain of the cookie used to identify a session - | in your application. This will determine which domains the cookie is - | available to in your application. A sensible default has been set. - | - */ - - 'domain' => env('SESSION_DOMAIN'), - - /* - |-------------------------------------------------------------------------- - | HTTPS Only Cookies - |-------------------------------------------------------------------------- - | - | By setting this option to true, session cookies will only be sent back - | to the server if the browser has a HTTPS connection. This will keep - | the cookie from being sent to you when it can't be done securely. - | - */ - - 'secure' => env('SESSION_SECURE_COOKIE'), - - /* - |-------------------------------------------------------------------------- - | HTTP Access Only - |-------------------------------------------------------------------------- - | - | Setting this value to true will prevent JavaScript from accessing the - | value of the cookie and the cookie will only be accessible through - | the HTTP protocol. You are free to modify this option if needed. - | - */ - - 'http_only' => true, - - /* - |-------------------------------------------------------------------------- - | Same-Site Cookies - |-------------------------------------------------------------------------- - | - | This option determines how your cookies behave when cross-site requests - | take place, and can be used to mitigate CSRF attacks. By default, we - | will set this value to "lax" since this is a secure default value. - | - | Supported: "lax", "strict", "none", null - | - */ - - 'same_site' => 'lax', - -]; diff --git a/config/view.php b/config/view.php deleted file mode 100644 index 22b8a18..0000000 --- a/config/view.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - resource_path('views'), - ], - - /* - |-------------------------------------------------------------------------- - | Compiled View Path - |-------------------------------------------------------------------------- - | - | This option determines where all the compiled Blade templates will be - | stored for your application. Typically, this is within the storage - | directory. However, as usual, you are free to change this value. - | - */ - - 'compiled' => env( - 'VIEW_COMPILED_PATH', - realpath(storage_path('framework/views')) - ), - -]; diff --git a/config/watch.yml b/config/watch.yml new file mode 100644 index 0000000..3a59b41 --- /dev/null +++ b/config/watch.yml @@ -0,0 +1,3 @@ +host: 127.0.0.1 +port: 3000 +reload_port: 3001 -- cgit v1.2.3-54-g00ecf