{$DOMAIN}

log {
	level {env.CADDY_LOG_LEVEL}
	output stderr
}

@protected path / /index.html /css/* /js/* /ro /ro/* /jsonrpc

basicauth @protected {
	ARIA2_USER ARIA2_PWD_ENCRYPT
}

redir /ui / 301
redir /ui/ / 301
redir /rclone /rclone/ 301
redir /files /files/ 301
redir /ro /ro/ 301

# Aria2 RPC with WebSocket support and timeouts
reverse_proxy /rpc 127.0.0.1:6800 {
	transport http {
		read_timeout 300s
		write_timeout 300s
		dial_timeout 30s
		keepalive 90s
		keepalive_idle_conns 10
		max_conns_per_host 0
	}
	header_up X-Real-IP {remote_host}
	header_up X-Forwarded-For {remote_host}
}

reverse_proxy /jsonrpc 127.0.0.1:6800 {
	transport http {
		read_timeout 300s
		write_timeout 300s
		dial_timeout 30s
		keepalive 90s
		keepalive_idle_conns 10
		max_conns_per_host 0
	}
	header_up X-Real-IP {remote_host}
	header_up X-Forwarded-For {remote_host}
}

route /rclone/* {
	uri strip_prefix /rclone
	reverse_proxy 127.0.0.1:5572 {
		transport http {
			read_timeout 120s
			write_timeout 120s
			keepalive 60s
		}
	}
}

route /files/* {
	uri strip_prefix /files
	reverse_proxy 127.0.0.1:8080 {
		transport http {
			read_timeout 120s
			write_timeout 120s
			keepalive 60s
		}
	}
}

route /ro/* {
	uri strip_prefix /ro
	root * /data
	file_server {
		browse "{$CADDY_FILE_SERVER_BROWSE_HTML}"
	}
}

route /ping {
	respond "app version: {env.APP_VERSION}"
}

root * /usr/local/www/aria2
file_server

encode gzip
