Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified .cargo/audit.toml
100644 → 100755
Empty file.
Empty file modified .env.example
100644 → 100755
Empty file.
Empty file modified .github/CODEOWNERS
100644 → 100755
Empty file.
Empty file modified .github/ISSUE_TEMPLATE/bug_report.yml
100644 → 100755
Empty file.
Empty file modified .github/ISSUE_TEMPLATE/config.yml
100644 → 100755
Empty file.
Empty file modified .github/ISSUE_TEMPLATE/feature_request.yml
100644 → 100755
Empty file.
Empty file modified .github/pull_request_template.md
100644 → 100755
Empty file.
Empty file modified .github/workflows/audit-schedule.yml
100644 → 100755
Empty file.
Empty file modified .github/workflows/pr-checks.yml
100644 → 100755
Empty file.
Empty file modified .github/workflows/pr-triage.yml
100644 → 100755
Empty file.
Empty file modified .github/workflows/release.yml
100644 → 100755
Empty file.
Empty file modified .github/workflows/stale.yml
100644 → 100755
Empty file.
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified .release-please-manifest.json
100644 → 100755
Empty file.
Empty file modified CHANGELOG.md
100644 → 100755
Empty file.
Empty file modified CONTRIBUTING.md
100644 → 100755
Empty file.
11 changes: 6 additions & 5 deletions Cargo.lock
100644 → 100755

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file modified Cargo.toml
100644 → 100755
Empty file.
Empty file modified Dockerfile
100644 → 100755
Empty file.
Empty file modified Dockerfile.bins
100644 → 100755
Empty file.
Empty file modified LICENSE-APACHE
100644 → 100755
Empty file.
Empty file modified LICENSE-MIT
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
Empty file modified SECURITY.md
100644 → 100755
Empty file.
Empty file modified bootstrap-peers.json
100644 → 100755
Empty file.
Empty file modified crates/git-remote-gitlawb/Cargo.toml
100644 → 100755
Empty file.
Empty file modified crates/git-remote-gitlawb/src/main.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/Cargo.toml
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/src/attestation.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/src/cert.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/src/error.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/src/lib.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/src/verifier.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/tests/canonical_vectors.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-attest/tests/with_gitlawb_core.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/Cargo.toml
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/cert.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/cid.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/did.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/encrypt.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/error.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/http_sig.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/identity.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/lib.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-core/src/ucan.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/Cargo.toml
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/agents.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/arweave.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/bounties.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/certs.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/changelog.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/encrypted.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/events.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/ipfs.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/issues.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/labels.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/mod.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/peers.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/profiles.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/protect.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/pulls.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/register.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/replicas.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/repos.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/resolve.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/stars.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/tasks.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/visibility.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/api/webhooks.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/arweave.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/auth/mod.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/bootstrap.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/cert.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/config.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/db/mod.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/encrypted_pin.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/error.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/issues.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/mod.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/push_delta.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/repo_store.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/smart_http.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/store.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/tigris.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/git/visibility_pack.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/graphql/mod.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/graphql/mutation.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/graphql/query.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/graphql/subscription.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/graphql/types.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/icaptcha.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/ipfs_pin.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/main.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/metrics.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/operator.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/p2p/mod.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/pinata.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/rate_limit.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/server.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/state.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/sync.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/test_support.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/visibility.rs
100644 → 100755
Empty file.
Empty file modified crates/gitlawb-node/src/webhooks.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/Cargo.toml
100644 → 100755
Empty file.
Empty file modified crates/gl/src/agent.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/bounty.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/cert.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/changelog.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/clone.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/doctor.rs
100644 → 100755
Empty file.
31 changes: 30 additions & 1 deletion crates/gl/src/http.rs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,18 @@ impl NodeClient {
self.send_signed("POST", path, body).await
}

/// POST with JSON body + RFC 9421 signing and an optional user-provided
/// iCaptcha proof, sent on the initial request.
pub async fn post_with_proof(
&self,
path: &str,
body: &[u8],
initial_proof: Option<&str>,
) -> Result<reqwest::Response> {
self.send_signed_with_proof("POST", path, body, initial_proof)
.await
}

/// PUT with RFC 9421 signing + transparent iCaptcha solve/retry.
pub async fn put(&self, path: &str, body: &[u8]) -> Result<reqwest::Response> {
self.send_signed("PUT", path, body).await
Expand All @@ -91,16 +103,32 @@ impl NodeClient {
/// `x-icaptcha-*` headers) solve it and retry the same signed request with
/// the proof header, up to [`MAX_ICAPTCHA_RETRIES`]. Emits an actionable
/// hint on a 401 "not an agent" (the old-CLI / unregistered failure mode).
/// Existing call path: no user-supplied proof on the first request.
async fn send_signed(
&self,
method: &str,
path: &str,
body: &[u8],
) -> Result<reqwest::Response> {
let mut proof: Option<String> = None;
self.send_signed_with_proof(method, path, body, None).await
}

/// Sign + send a write. `initial_proof`, if provided, is attached to the
/// first request. On a 403 iCaptcha challenge advertised via
/// `x-icaptcha-*` headers, solve and retry up to MAX_ICAPTCHA_RETRIES.
async fn send_signed_with_proof(
&self,
method: &str,
path: &str,
body: &[u8],
initial_proof: Option<&str>,
) -> Result<reqwest::Response> {
let mut proof = initial_proof.map(str::to_owned);
let mut attempts = 0;

loop {
let resp = self.send_once(method, path, body, proof.as_deref()).await?;

let status = resp.status();

if status == reqwest::StatusCode::UNAUTHORIZED
Expand All @@ -124,6 +152,7 @@ impl NodeClient {
continue;
}
}

return Ok(resp);
}
}
Expand Down
Empty file modified crates/gl/src/identity.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/init.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/ipfs_cmd.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/issue.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/main.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/mcp.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/mirror.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/name.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/node.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/node_stake.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/peer.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/pr.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/profile.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/protect.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/quickstart.rs
100644 → 100755
Empty file.
8 changes: 7 additions & 1 deletion crates/gl/src/register.rs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ pub struct RegisterArgs {
#[arg(long, default_value = "https://node.gitlawb.com", env = "GITLAWB_NODE")]
pub node: String,

#[arg(long, env = "GITLAWB_ICAPTCHA_PROOF")]
pub icaptcha_proof: Option<String>,

/// Capabilities to advertise (comma-separated)
#[arg(
long,
Expand Down Expand Up @@ -51,7 +54,7 @@ pub async fn run(args: RegisterArgs) -> Result<()> {
}))?;

let resp = client
.post("/api/register", &body)
.post_with_proof("/api/register", &body, args.icaptcha_proof.as_deref())
.await
.context("failed to connect to node")?;

Expand Down Expand Up @@ -147,6 +150,7 @@ mod tests {
capabilities: vec!["git:push".to_string(), "git:fetch".to_string()],
model: None,
dir: Some(dir.path().to_path_buf()),
icaptcha_proof: None,
})
.await
.unwrap();
Expand Down Expand Up @@ -179,6 +183,7 @@ mod tests {
capabilities: vec!["git:push".to_string()],
model: None,
dir: Some(dir.path().to_path_buf()),
icaptcha_proof: None,
})
.await;

Expand All @@ -198,6 +203,7 @@ mod tests {
capabilities: vec![],
model: None,
dir: Some(dir.path().to_path_buf()),
icaptcha_proof: None,
})
.await;

Expand Down
Empty file modified crates/gl/src/repo.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/star.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/status.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/sync.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/task.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/ucan_cmd.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/visibility.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/webhook.rs
100644 → 100755
Empty file.
Empty file modified crates/gl/src/whoami.rs
100644 → 100755
Empty file.
Empty file modified crates/icaptcha-client/Cargo.toml
100644 → 100755
Empty file.
Empty file modified crates/icaptcha-client/src/lib.rs
100644 → 100755
Empty file.
Empty file modified crates/icaptcha-client/src/pow.rs
100644 → 100755
Empty file.
Empty file modified crates/icaptcha-client/src/solvers.rs
100644 → 100755
Empty file.
Empty file modified docker-compose.yml
100644 → 100755
Empty file.
Empty file modified docs/ECONOMICS.md
100644 → 100755
Empty file.
Empty file modified docs/MAINTAINER-ROADMAP.md
100644 → 100755
Empty file.
Empty file modified docs/OSS-READINESS-AUDIT.md
100644 → 100755
Empty file.
Empty file modified docs/RUN-A-NODE.md
100644 → 100755
Empty file.
Empty file modified infra/README.md
100644 → 100755
Empty file.
Empty file modified infra/aws/.gitignore
100644 → 100755
Empty file.
Empty file modified infra/aws/.terraform.lock.hcl
100644 → 100755
Empty file.
Empty file modified infra/aws/README.md
100644 → 100755
Empty file.
Empty file modified infra/aws/compose.yaml.tftpl
100644 → 100755
Empty file.
Empty file modified infra/aws/main.tf
100644 → 100755
Empty file.
Empty file modified infra/aws/monitoring.tf
100644 → 100755
Empty file.
Empty file modified infra/aws/outputs.tf
100644 → 100755
Empty file.
Empty file modified infra/aws/rds.tf
100644 → 100755
Empty file.
Empty file modified infra/aws/terraform.tfvars.example
100644 → 100755
Empty file.
Empty file modified infra/aws/user-data.sh.tftpl
100644 → 100755
Empty file.
Empty file modified infra/aws/variables.tf
100644 → 100755
Empty file.
Empty file modified infra/aws/versions.tf
100644 → 100755
Empty file.
Empty file modified infra/fly/fly.toml
100644 → 100755
Empty file.
Empty file modified install.ps1
100644 → 100755
Empty file.
Empty file modified install.sh
100644 → 100755
Empty file.
Empty file modified macos-app/.gitignore
100644 → 100755
Empty file.
Empty file modified macos-app/Package.swift
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/AppDelegate.swift
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/Config.swift
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/DockerCompose.swift
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/DockerDetector.swift
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/Info.plist
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/Resources/AppIcon.icns
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/Resources/MenuBarIcon.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified macos-app/Sources/GitlawbNode/Resources/MenuBarIcon@2x.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file modified macos-app/Sources/GitlawbNode/Resources/docker-compose.yml
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/SettingsWindow.swift
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/StatusBarController.swift
100644 → 100755
Empty file.
Empty file modified macos-app/Sources/GitlawbNode/main.swift
100644 → 100755
Empty file.
Empty file modified npm/.gitignore
100644 → 100755
Empty file.
Empty file modified npm/README.md
100644 → 100755
Empty file.
Empty file modified npm/packages/gl-darwin-arm64/package.json
100644 → 100755
Empty file.
Empty file modified npm/packages/gl-darwin-x64/package.json
100644 → 100755
Empty file.
Empty file modified npm/packages/gl-linux-arm64/package.json
100644 → 100755
Empty file.
Empty file modified npm/packages/gl-linux-x64/package.json
100644 → 100755
Empty file.
Empty file modified npm/packages/gl/README.md
100644 → 100755
Empty file.
Empty file modified npm/packages/gl/bin/.gitkeep
100644 → 100755
Empty file.
Empty file modified npm/packages/gl/install.js
100644 → 100755
Empty file.
Empty file modified npm/packages/gl/package.json
100644 → 100755
Empty file.
Empty file modified release-please-config.json
100644 → 100755
Empty file.
Loading