Skip to content

Instantly share code, notes, and snippets.

View akunzai's full-sized avatar

Charley Wu akunzai

  • Taipei,Taiwan
  • 20:30 (UTC +08:00)
  • X @akunzai
View GitHub Profile
@akunzai
akunzai / ForwardedHeadersMiddleware.cs
Last active January 10, 2024 10:37
Handle `X-Forwarded-*` headers for OWIN
public class ForwardedHeadersMiddleware : OwinMiddleware
{
public ForwardedHeadersMiddleware(OwinMiddleware next) : base(next)
{
}
public override Task Invoke(IOwinContext context)
{
if (string.Equals(context.Request.Headers["X-Forwarded-Proto"], "https",
StringComparison.OrdinalIgnoreCase))
# https://github.com/colinmollenhour/docker-openmage/blob/main/8.2/apache/Dockerfile
# https://github.com/OpenMage/magento-lts/tree/main/dev/openmage
ARG PHP_VERSION=8.2
ARG OPENMAGE_VERSION=20.3.0
FROM alpine as unzipper
ARG OPENMAGE_VERSION
RUN set -eux; \
apk add curl unzip; \
mkdir -p /usr/src/openmage; \
@akunzai
akunzai / ListOfEnumStringConverter.cs
Last active November 10, 2023 14:59
JsonConverter for list of enum string
using System.Reflection;
namespace System.Text.Json.Serialization;
/// https://learn.microsoft.com/dotnet/standard/serialization/system-text-json/converters-how-to
public class ListOfEnumStringConverter : JsonConverterFactory
{
public override bool CanConvert(Type typeToConvert)
{
if (!typeToConvert.IsGenericType)
@akunzai
akunzai / server.js
Created October 22, 2023 10:25
a mini HTTP server to inspect requests
// see alternative tool at https://www.npmjs.com/package/reqon
const http = require('http');
const port = process.argv[2] || 3000;
const server = http.createServer((req, res) => {
console.log('--- ', new Date().toISOString());
console.log(req.method, req.url);
for (let header in req.headers) {
console.log(`${header}: ${req.headers[header]}`);
}
@akunzai
akunzai / gitlab-artifacts-cleanup.py
Last active May 2, 2023 10:40 — forked from Pingu501/gitlab-artifacts-cleanup.py
GitLab Artifacts Clean-Up
#! /usr/bin/env python3
# encoding: utf-8
"""
This is a small python script to clear up old gitlab build artifacts.
"""
import argparse
import datetime
import functools
import json
@akunzai
akunzai / build-protoaculous.sh
Created September 2, 2022 02:34
Bundles up the latest from prototypejs and scriptaculous into a single file
#!/bin/sh
# Origin: https://github.com/inderpreet99/protoaculous-bundler
# Requirements: curl,unzip,perl,npx
PROTOTYPE_VER="1.7.3.0"
SCRIPTACULOUS_VER="1.9.0"
[ -f "prototype.$PROTOTYPE_VER.js" ] || curl -so prototype.$PROTOTYPE_VER.js https://ajax.googleapis.com/ajax/libs/prototype/$PROTOTYPE_VER/prototype.js
[ -f "scriptaculous-js-$SCRIPTACULOUS_VER.zip" ] || curl -sO http://script.aculo.us/dist/scriptaculous-js-$SCRIPTACULOUS_VER.zip
unzip -q -o scriptaculous-js-$SCRIPTACULOUS_VER.zip
@akunzai
akunzai / Program.cs
Created August 15, 2022 15:39
Tiny ASP.NET Core Minimal API that prints os information and HTTP request to output
using System.Net.NetworkInformation;
using System.Net.Sockets;
using Microsoft.AspNetCore.Http.Extensions;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Map("/", async (HttpRequest request, HttpResponse response) =>
{
@akunzai
akunzai / web.config
Last active January 5, 2023 22:05
ASP.NET Web application security configurations
<!-- The following configuration should also work with Azure App Service -->
<configuration>
<system.web>
<!-- Disable X-AspNet-Version Header -->
<httpRuntime enableVersionHeader="false" />
<!-- File upload size limit (KB), avoid DoS attack -->
<httpRuntime maxRequestLength="4096" />
<!-- Disable debug & trace in Production -->
<compilation debug="false" />
<trace enabled="false" />
@akunzai
akunzai / MiddlewareDiagnosticObserver.cs
Last active May 17, 2022 13:48
Analysis ASP.NET Core middleware pipeline
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.AspNetCore.Http;
public class MiddlewareDiagnosticObserver : IObserver<KeyValuePair<string,object?>>
{
public void OnCompleted()
{
// Do nothing