Add Android forensics, IOC threat-intel DB, Compose companion; scrub secrets from configs

This commit is contained in:
SsSnake
2026-07-13 15:45:47 -07:00
parent 925216290f
commit e48d577bd5
387 changed files with 211976 additions and 921 deletions

View File

@@ -0,0 +1,256 @@
# Linking Archon as a Git Submodule of AUTARCH
This guide walks through setting up Archon (the Android companion app) as a git submodule inside the AUTARCH repository, hosted on a self-hosted Gitea instance.
**Assumed URLs:**
- AUTARCH: `https://gitea.example.com/you/autarch`
- Archon: `https://gitea.example.com/you/archon`
---
## 1. Initial Setup — Create Both Repos on Gitea
### Create the repos on Gitea
Log into your Gitea instance and create two repositories:
1. Go to `https://gitea.example.com`**+** → **New Repository**
2. Create `autarch` (do not initialize with README if you already have local files)
3. Repeat for `archon`
### Push AUTARCH
```bash
cd /path/to/autarch
git init # if not already a git repo
git remote add origin https://gitea.example.com/you/autarch.git
git add .
git commit -m "Initial commit"
git push -u origin main
```
### Push Archon
```bash
cd /path/to/archon
git init
git remote add origin https://gitea.example.com/you/archon.git
git add .
git commit -m "Initial commit"
git push -u origin main
```
---
## 2. Add Archon as a Submodule
From the **AUTARCH repository root**, run:
```bash
cd /path/to/autarch
git submodule add https://gitea.example.com/you/archon.git Archon
```
This does three things:
- Clones the Archon repo into `autarch/Archon/`
- Creates (or updates) `.gitmodules` in the AUTARCH root
- Stages both `.gitmodules` and the new `Archon` directory pointer
If you prefer SSH instead of HTTPS:
```bash
git submodule add git@gitea.example.com:you/archon.git Archon
```
---
## 3. Commit the Submodule Reference
After adding the submodule, two things are staged:
- `.gitmodules` — a config file mapping the submodule path to its URL
- `Archon` — not the Archon files themselves, but a **pointer** (a specific commit hash) to the Archon repo
Commit both:
```bash
git status
# On branch main
# Changes to be committed:
# new file: .gitmodules
# new file: Archon
git commit -m "Add Archon as git submodule"
git push origin main
```
AUTARCH's repo now contains a reference to a specific commit in Archon — not the Archon files directly. This is intentional: submodules are pinned to a commit, not a branch.
---
## 4. `.gitmodules` Example
After running `git submodule add`, your `.gitmodules` file will look like this:
```ini
[submodule "Archon"]
path = Archon
url = https://gitea.example.com/you/archon.git
```
If you want to track a specific branch (optional, see pitfalls):
```ini
[submodule "Archon"]
path = Archon
url = https://gitea.example.com/you/archon.git
branch = main
```
---
## 5. Cloning AUTARCH with Archon
### Option A — Clone everything at once (recommended)
```bash
git clone --recurse-submodules https://gitea.example.com/you/autarch.git
```
This clones AUTARCH and immediately initializes and checks out Archon at the pinned commit.
### Option B — Clone AUTARCH first, pull Archon later
```bash
git clone https://gitea.example.com/you/autarch.git
cd autarch
git submodule update --init
```
`--init` is needed the first time because the submodule isn't initialized yet. After that, use `git submodule update` without `--init`.
To also pull nested submodules (if Archon ever gains its own submodules):
```bash
git submodule update --init --recursive
```
---
## 6. Updating Archon to a Newer Commit
The submodule is pinned to a specific commit. To move AUTARCH's pointer to a newer Archon commit:
```bash
# Step into the submodule
cd Archon
git checkout main
git pull origin main
# Step back out to AUTARCH
cd ..
# The submodule pointer has changed — stage and commit it
git add Archon
git commit -m "Update Archon submodule to latest"
git push origin main
```
After this, anyone who runs `git submodule update` in their AUTARCH clone will get the newer Archon commit.
---
## 7. Gitea UI — How Submodules Are Displayed
When you browse to `https://gitea.example.com/you/autarch` in the Gitea web UI, the `Archon` directory will appear in the file list with a special icon and a label like:
```
Archon @ a3f92c1
```
The `@ a3f92c1` is a clickable link that takes you directly to that commit in the `archon` repository. Gitea resolves the link automatically as long as both repos are on the same Gitea instance and the URL in `.gitmodules` matches.
If the submodule URL points to an external host (e.g., GitHub), Gitea will still show the `@ hash` label but the link will point to the external URL.
---
## 8. CI/CD — Checking Out Submodules in Gitea Actions
If you use Gitea Actions (workflow syntax is identical to GitHub Actions), the default `actions/checkout` step does **not** pull submodules. Add `submodules: true` to fix this:
```yaml
name: AUTARCH CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout AUTARCH with submodules
uses: actions/checkout@v4
with:
submodules: true # fetches Archon at the pinned commit
# submodules: recursive # use this if submodules have their own submodules
- name: Build
run: make build
```
For private submodules on the same Gitea instance, you may need to configure an SSH key or access token in the workflow secrets and set the submodule URL to use SSH.
---
## 9. Common Pitfalls
### Detached HEAD in the submodule
When you run `git submodule update`, the submodule is checked out at a specific commit — not a branch. This is called a **detached HEAD** state. If you `cd Archon` and make commits while in detached HEAD, those commits are not on any branch and can be lost.
Fix: before making changes inside the submodule, always check out a branch first:
```bash
cd Archon
git checkout main
# now make changes, commit, push
```
### Forgot to commit after updating the submodule
Running `cd Archon && git pull` updates the Archon files locally but does **not** automatically update AUTARCH's pointer to the new commit. You must come back to the AUTARCH root and commit:
```bash
cd ..
git add Archon
git commit -m "Update Archon submodule"
```
If you push AUTARCH without doing this, the pointer still points to the old Archon commit and collaborators won't get the update.
### SSH vs HTTPS
Choose one scheme and be consistent. If your team uses SSH keys for Gitea authentication, use the SSH URL in `.gitmodules`:
```ini
url = git@gitea.example.com:you/archon.git
```
If you use HTTPS with a token, use the HTTPS URL. Mixing them causes authentication failures for people whose environment only has one configured.
You can override the URL locally (without touching `.gitmodules`) using:
```bash
git config submodule.Archon.url git@gitea.example.com:you/archon.git
```
This writes to `.git/config` and is not committed, so it only affects your local clone.
### Cloning without `--recurse-submodules`
If someone clones AUTARCH normally and then tries to build, the `Archon/` directory will exist but be **empty**. They need to run:
```bash
git submodule update --init
```
Document this in your project README so contributors know to expect it.