Skip to content

Update Demo Branch from Main #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 26 commits into from
Jul 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
fc69356
fix: Registrars query (#28)
Lissy93 Jul 17, 2025
1e95ca9
ref: Logging util
Lissy93 Jul 20, 2025
211a404
ref: Implements logging in domain-info
Lissy93 Jul 20, 2025
83fe9e8
ref: Moves whois to own file
Lissy93 Jul 20, 2025
5c927bd
ref: Moves whois to own file
Lissy93 Jul 20, 2025
778844b
ref: Split statuses case-insensetive
Lissy93 Jul 20, 2025
3ed3a8d
ref: Introduce a timeout for whois checks (#29)
Lissy93 Jul 21, 2025
7ca40b0
Add: added ingress for helm chart & heplers file for self deployment
utsavv27 Jul 22, 2025
a333477
Merge pull request #31 from utsavv27/feat/helm-ingress
Lissy93 Jul 22, 2025
f564cc9
fix: Delete domain on self-hosted (#29)
Lissy93 Jul 23, 2025
2afa729
docs: Adds security policy
Lissy93 Jul 24, 2025
b102c82
docs: Adds docs for fetching domain-info (#29)
Lissy93 Jul 25, 2025
3d0f33b
ref: For self-hosted, allow subdomain fetching via shodan (#29)
Lissy93 Jul 25, 2025
c7158a7
docs: Adds subdomain info to domain-info docs for self-hosting
Lissy93 Jul 25, 2025
b200e4e
ref: More complete whois
Lissy93 Jul 25, 2025
96169c5
Update src/server/utils/whois.ts
Lissy93 Jul 25, 2025
3a1a0aa
ref: Implements code review suggestions
Lissy93 Jul 25, 2025
3741a32
ref: Valid fields for domain-info
Lissy93 Jul 26, 2025
425f6f8
Merge pull request #32 from Lissy93/fix/self-hosted-schema-issues
Lissy93 Jul 26, 2025
f5731d2
ref: Conditionals for isAuthenticated (#33)
Lissy93 Jul 26, 2025
0317baa
feat: Issue and PR templates
Lissy93 Jul 26, 2025
51faf81
ref: Small refactor and ammend docs
Lissy93 Jul 26, 2025
2acba91
feat: Update submodule(s) before tag published
Lissy93 Jul 26, 2025
24ed72d
bump: Release v0.1.0
Lissy93 Jul 26, 2025
ecac9ab
Merge pull request #34 from Lissy93/ref/repo-admin
Lissy93 Jul 26, 2025
8e3e282
Merge remote-tracking branch 'origin/main' into demo
liss-bot Jul 26, 2025
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
83 changes: 83 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: πŸ› Bug report
description: File a bug report to help us improve Domain Locker
title: '[Bug]: '
body:
- type: dropdown
id: environment
attributes:
label: Environment
description: How are you running Domain Locker?
options:
- Docker (self-hosted)
- Kubernetes (self-hosted)
- From source (self-hosted)
- Other (self-hosted)
- domain-locker.com (managed instance)
validations:
required: true

- type: input
id: version
attributes:
label: Version
description: >-
What version of Domain Locker are you using?<br>
You can find this in the bottom-left corner of the footer.
placeholder: e.g. 0.1.0

- type: textarea
id: description
attributes:
label: Describe the Issue
description: >-
Please include clear steps to reproduce the issue, the expected behavior,
actual behavior, and any error messages or warnings.<br>
Screenshots or other supporting materials are also very helpful.
validations:
required: true

- type: textarea
id: logs
attributes:
label: Logs
description: >-
Include any relevant logs that may help diagnose the issue.<br>
See [checking logs](https://domain-locker.com/about/developing/checking-logs)
for a guide on where to find these.

- type: textarea
id: system-info
attributes:
label: System
description: >-
Where applicable, provide any relevant system and environment info.
You can find debug info by visiting
`http://[instance-url]/advanced/debug-info` or
[here](https://domain-locker.com/advanced/debug-info) on the managed
instance.

- type: checkboxes
id: confirmation
attributes:
label: Before submitting
options:
- label: I have clearly described the issue and included all relevant information
required: true
- label: I have checked the [documentation](https://domain-locker.com/about) for a solution
required: true
- label: I have confirmed that this issue has not already been reported
required: true
- label: I have redacted any sensitive information from logs or debug data
required: true
- label: I agree to follow the [Code of Conduct](https://github.com/Lissy93/domain-locker/blob/main/.github/CODE_OF_CONDUCT.md)
required: true

- type: markdown
attributes:
value: >-
βœ… Thank you for taking the time to report this issue! Your feedback helps us make Domain Locker better.<br><br>
Please note: While I can't guarantee a fix or response for all reports β€” especially from free or
self-hosted users β€” I value every issue raised and will do my best to help where possible.<br><br>
If you're comfortable debugging or contributing, feel free to check out the
[developer docs](https://domain-locker.com/about/developing) β€”
they might help you find a workaround or solution in the meantime.
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@

name: ✨ Feature Request
description: Suggest a new feature or improvement for Domain Locker
title: '[Feature Request]: '

body:
- type: textarea
id: feature
attributes:
label: Describe the feature
description: >-
What problem does this feature solve or what would it improve?
Please explain clearly, and include example use-cases or scenarios.
validations:
required: true

- type: dropdown
id: willingness
attributes:
label: Would you be open to implementing this yourself?
options:
- Yes, I'd like to implement it
- Maybe, with some guidance
- No, just suggesting the idea

- type: textarea
id: execution
attributes:
label: 'Optional: How should it work?'
description: >-
If you have an idea for how this can be implemented or how it should behave, feel free to describe them here.

- type: markdown
attributes:
value: >-
πŸ™Œ Thanks for your suggestion! While I can't guarantee every feature will
be implemented β€” especially if it's highly specific β€” I will carefully
consider all ideas and prioritize those that benefit the wider community.<br><br>
If you're keen to contribute or prototype the idea yourself, check out our
[developer docs](https://domain-locker.com/about/developing) - PRs are always welcome!

19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: ❓ Question
description: Ask a question about using or developing Domain Locker
title: '[Question]: '
body:
- type: textarea
id: question
attributes:
label: Your Question
description: >-
Please clearly describe your question or what you need help with.
If it's about usage, include what you've tried and what you're hoping to do.
For development-related questions, feel free to share relevant code or errors.
validations:
required: true
- type: markdown
attributes:
value: >-
πŸ’‘ Tip: You can also check the [documentation](https://domain-locker.com/about)
or [developer guides](https://domain-locker.com/about/developing)
13 changes: 13 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

## Summary
<!-- Short overview of changes, and reasoning -->

## Related
<!-- Link to relevant issues, PRs or discussions -->

## Checklist
<!-- Put an X in the checkboxes which apply -->
- [ ] I've tested this change
- [ ] I've followed the coding style and contribution guidelines
- [ ] I've updated documentation (if needed)
- [ ] I've confirmed this change is backwards compatible / won't break anything
47 changes: 47 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@

# Security Policy for Domain Locker

> [!IMPORTANT]
> Domain Locker (self-hosted) comes with no warranty. Use at your own risk. The security of your data is your responsibility.

## Security Overview
Domain Locker is designed with security in mind, but no software is immune to vulnerabilities. This document outlines our security policy, including how we handle vulnerabilities, supported versions, and how to report security issues.

### Managed Instance
For security policy for the managed instance (domain-locker.com), please refer to [Legal β†’ Security](https://domain-locker.com/about/legal/security).

### Self-Hosted Instance
For self-hosted users, it is your responsibility to ensure the security of your instance. Implementing proper access controls, regular updates and following security best practices is crucial.

---

## Supported Versions
We only provide security updates for the latest major version of Domain Locker and its active minor releases. Users running older versions are strongly encouraged to upgrade.

---

## Reporting Security Issues
If you discover a security vulnerability in the Domain Locker application, please report it to us immediately.
We take security seriously and will work with you to resolve the issue promptly.

### How to Report
Send an email to `[email protected]` with the subject line "Domain Locker Security Issue".

### What to Include
- A detailed description of the vulnerability.
- Steps to reproduce the issue.
- Any relevant screenshots or logs.
- Your contact information (optional, but helpful for follow-up).

### Response Time
We will acknowledge your report within 48 hours and aim to provide a fix or mitigation plan within 28 days, depending on the severity of the issue.

### Disclosure Policy
Please do not publicly disclose the vulnerability until we have had a chance to address it. We will coordinate with you on the timeline for public disclosure once the issue is resolved.

### Out of Scope Issues
- Issues that are not related to the Domain Locker application itself (e.g., server configuration, third-party services).
- Issues that require physical access to the server or user devices.
- Issues that are already publicly known or documented.
- Issues that are not reproducible or lack sufficient detail for investigation.
- Issues solely due to known vulnerable third-party packages (such as npm dependencies), unless they lead to an actual exploit within Domain Locker.
19 changes: 19 additions & 0 deletions .github/workflows/tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ jobs:
VERSION=$(jq -r .version package.json)
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Update submodules recursively
continue-on-error: true
run: |
echo "Updating submodules recursively..."
git submodule update --recursive --remote || echo "Submodule update failed or no changes."

- name: Commit submodule updates if any
continue-on-error: true
run: |
if ! git diff --quiet; then
VERSION="${{ steps.get_version.outputs.version }}"
echo "Committing submodule updates..."
git add .
git commit -m "bot: Update supabase server for domain-locker v${VERSION}" || echo "Nothing to commit"
git push origin HEAD || echo "Push failed or nothing to push"
else
echo "No submodule updates to commit."
fi

- name: Create Git Tag (skip if exists)
run: |
VERSION="${{ steps.get_version.outputs.version }}"
Expand Down
14 changes: 14 additions & 0 deletions helm/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{{- define "domain-locker-app.fullname" -}}
{{- printf "%s-%s" .Release.Name "app" | trunc 63 | trimSuffix "-" -}}
{{- end }}

{{- define "domain-locker-app.labels" -}}
app.kubernetes.io/name: {{ include "domain-locker-app.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{- define "domain-locker-app.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end }}
38 changes: 38 additions & 0 deletions helm/templates/app-ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{{- if and .Values.app.ingress (hasKey .Values.app.ingress "enabled") .Values.app.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: domain-locker-app-ingress
labels:
{{- include "domain-locker-app.labels" . | nindent 4 }}
annotations:
{{- with .Values.app.ingress.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
rules:
{{- range .Values.app.ingress.hosts }}
- host: {{ .host }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
pathType: {{ .pathType | default "Prefix" }}
backend:
service:
name: {{ .service.name }}
port:
number: {{ .service.port }}
{{- end }}
{{- end }}
{{- if .Values.app.ingress.tls }}
tls:
{{- range .Values.app.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
{{- end }}
14 changes: 13 additions & 1 deletion helm/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,19 @@ app:
DL_PG_NAME: domain_locker
ingress:
enabled: true
hostname: domain-locker.local
# ingressClassName: "nginx"
annotations: # nginx.ingress.kubernetes.io/rewrite-target: /
hosts:
- host: domain-locker.localhost.com
paths:
- path: /
service:
name: domain-locker-app
port: 80
# tls:
# - hosts:
# - domain-locker.localhost.com
# secretName: domain-locker.localhost.com-tls

postgres:
image: postgres:15-alpine
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "domain-locker",
"version": "0.0.9",
"version": "0.1.0",
"type": "module",
"engines": {
"node": ">=20.0.0"
Expand Down
36 changes: 22 additions & 14 deletions src/app/components/navbar/navbar.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,22 +67,21 @@ export class NavbarComponent implements OnInit, AfterViewInit {
) {}

ngOnInit() {
// Check auth status and fetch user plan
this.checkAuthStatus();
this.billingService.fetchUserPlan();
// Set contents of menubar items
this.initializeMenuItems();

// Subscribe to auth state changes, and also init menu items
this.subscriptions.add(
this.supabaseService.authState$.subscribe(isAuthenticated => {
this.isAuthenticated = isAuthenticated;
this.initializeMenuItems();
this.cdr.detectChanges();
})
);
// Check auth status, listen for changes and fetch user plan
this.setAuthState();

// Get user plan (for navbar badge, later)
this.billingService.fetchUserPlan();

// Log the result of enableSignUp feature flag when it's ready
// If enableSignup is enabled, then show the Signup button (if not logged in)
this.featureService.isFeatureEnabled('enableSignUp').subscribe(enabled => {
this.enableSignUp = enabled;
if (this.isAuthenticated) {
this.enableSignUp = false;
}
this.cdr.detectChanges();
});
}
Expand Down Expand Up @@ -149,9 +148,18 @@ export class NavbarComponent implements OnInit, AfterViewInit {
}
}

async checkAuthStatus() {
async setAuthState() {
if (!this.environmentService.isSupabaseEnabled()) {
this.isAuthenticated = true;
return;
}
this.isAuthenticated = await this.supabaseService.isAuthenticated();
this.supabaseService.setAuthState(this.isAuthenticated);
this.subscriptions.add(
this.supabaseService.authState$.subscribe(isAuthenticated => {
this.initializeMenuItems();
this.isAuthenticated = isAuthenticated;
})
);
}

// Set the navbar links, depending if user is logged in or not
Expand Down
Loading