12 Commits
Author SHA1 Message Date
Chris Troutner 6cf03ca0fe Merge pull request #17 from Permissionless-Software-Foundation/ct-unstable
fix(Fulcrum): Handling different URL and auth tokens
2026-02-04 14:10:58 -07:00
Chris Troutner 5ea7bc9c29 fix(Fulcrum): Handling different URL and auth tokens 2026-02-04 14:09:12 -07:00
Chris Troutner 39021aba46 Merge pull request #16 from Permissionless-Software-Foundation/ct-unstable
fix(node v22): Updating dependencies & testing node.js v22
2026-01-16 11:10:38 -07:00
Chris Troutner de34547951 fix(node v22): Updating dependencies & testing node.js v22 2026-01-16 11:09:54 -07:00
Chris Troutner b8f34fb40e Merge pull request #15 from Permissionless-Software-Foundation/ct-unstable
fix(forward slashes): Fixing express specific issue
2025-12-29 18:16:13 -07:00
Chris Troutner 3778894ce2 Merge branch 'master' into ct-unstable 2025-12-29 18:15:16 -07:00
Chris Troutner 02eb8afd21 fix(forward slashes): Fixing express specific issue 2025-12-29 18:14:59 -07:00
Chris Troutner e708fc1228 Merge pull request #14 from Permissionless-Software-Foundation/ct-unstable
Adding middleware to detect multiple forward slashes in URL and automatically fix it.
2025-12-29 18:07:43 -07:00
Chris Troutner fed4b2da59 fix(forward slashes): Adding middleware to detect multiple forward slashes in the URL 2025-12-29 18:06:43 -07:00
Chris Troutner f30c2ede04 fix(deps): Updating dependencies 2025-12-29 18:01:30 -07:00
Chris Troutner 09e05d51e5 Merge pull request #13 from Permissionless-Software-Foundation/ct-unstable
feat(x402-bch): Updating to v2 protocol
2025-12-24 14:26:30 -07:00
Chris Troutner 22cbc54dee feat(x402-bch): Updating to v2 protocol 2025-12-24 14:25:44 -07:00
4 changed files with 614 additions and 528 deletions
+13
View File
@@ -74,6 +74,19 @@ class Server {
allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With']
}))
// URL normalization middleware - collapse multiple slashes
app.use((req, res, next) => {
if (req.url && req.url.includes('//')) {
// Split URL into path and query string
const [path, queryString] = req.url.split('?')
// Collapse multiple consecutive slashes into a single slash
const normalizedPath = path.replace(/\/+/g, '/')
// Reconstruct req.url with normalized path (req.path is read-only and will auto-update)
req.url = queryString ? `${normalizedPath}?${queryString}` : normalizedPath
}
next()
})
// Apply basic auth middleware if enabled
// This must run before x402 middleware to set req.locals.basicAuthValid
if (basicAuthSettings.enabled) {
+590 -522
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -15,17 +15,17 @@
"license": "MIT",
"description": "REST API proxy to Bitcoin Cash infrastructure",
"dependencies": {
"@psf/bch-js": "7.1.2",
"@psf/bch-js": "7.1.11",
"axios": "1.7.7",
"cors": "2.8.5",
"dotenv": "16.3.1",
"express": "5.1.0",
"minimal-slp-wallet": "7.0.2",
"minimal-slp-wallet": "7.1.4",
"psffpp": "1.2.1",
"slp-token-media": "1.2.10",
"winston": "3.11.0",
"winston-daily-rotate-file": "4.7.1",
"x402-bch-express": "1.1.3"
"x402-bch-express": "2.0.0"
},
"devDependencies": {
"apidoc": "1.2.0",
+8 -3
View File
@@ -6,9 +6,14 @@ import wlogger from '../adapters/wlogger.js'
import BCHJS from '@psf/bch-js'
import config from '../config/index.js'
const bchjs = new BCHJS({
restURL: config.restURL,
bearerToken: config.basicAuth.token
// Use RESTURL (from test) or REST_URL (from psf-bch-api config) or fallback to config
const restURL = process.env.RESTURL || process.env.REST_URL || process.env.LOCAL_RESTURL || config.restURL
// Use BCHJSBEARERTOKEN (from test) or BASIC_AUTH_TOKEN (from psf-bch-api config) or fallback to config
const bearerToken = process.env.BCHJSBEARERTOKEN || process.env.BASIC_AUTH_TOKEN || config.basicAuth.token
const bchjs = new BCHJS({
restURL,
bearerToken
})
class FulcrumUseCases {