mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2025-09-10 07:58:47 +00:00
update
This commit is contained in:
@@ -406,6 +406,15 @@
|
|||||||
|
|
||||||
<!-- Footer -->
|
<!-- Footer -->
|
||||||
<footer class="mt-auto pb-8 text-center px-4">
|
<footer class="mt-auto pb-8 text-center px-4">
|
||||||
|
<a
|
||||||
|
href="http://bitvid.network/"
|
||||||
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
bitvid.network
|
||||||
|
</a>
|
||||||
|
|
|
||||||
<a
|
<a
|
||||||
href="https://bitvid.btc.us"
|
href="https://bitvid.btc.us"
|
||||||
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
||||||
@@ -424,14 +433,6 @@
|
|||||||
bitvid.eth.limo
|
bitvid.eth.limo
|
||||||
</a>
|
</a>
|
||||||
|
|
|
|
||||||
<a
|
|
||||||
href="https://bitvid.netlify.app"
|
|
||||||
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
bitvid.netlify.app
|
|
||||||
</a>
|
|
||||||
<div class="mt-2 space-x-4">
|
<div class="mt-2 space-x-4">
|
||||||
<a
|
<a
|
||||||
href="https://github.com/PR0M3TH3AN/bitvid"
|
href="https://github.com/PR0M3TH3AN/bitvid"
|
||||||
@@ -498,7 +499,10 @@
|
|||||||
<!-- Load Nostr library -->
|
<!-- Load Nostr library -->
|
||||||
<script src="js/libs/nostr.bundle.js"></script>
|
<script src="js/libs/nostr.bundle.js"></script>
|
||||||
<!-- Load JavaScript Modules -->
|
<!-- Load JavaScript Modules -->
|
||||||
|
<script src="js/libs/nostr.bundle.js"></script>
|
||||||
<script type="module" src="js/config.js"></script>
|
<script type="module" src="js/config.js"></script>
|
||||||
|
<script type="module" src="js/lists.js"></script>
|
||||||
|
<script type="module" src="js/accessControl.js"></script>
|
||||||
<script type="module" src="js/webtorrent.js"></script>
|
<script type="module" src="js/webtorrent.js"></script>
|
||||||
<script type="module" src="js/nostr.js"></script>
|
<script type="module" src="js/nostr.js"></script>
|
||||||
<script type="module" src="js/app.js"></script>
|
<script type="module" src="js/app.js"></script>
|
||||||
|
154
src/js/accessControl.js
Normal file
154
src/js/accessControl.js
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
// js/accessControl.js
|
||||||
|
|
||||||
|
import { isDevMode, isWhitelistEnabled } from "./config.js";
|
||||||
|
import { initialWhitelist, initialBlacklist } from "./lists.js";
|
||||||
|
|
||||||
|
class AccessControl {
|
||||||
|
constructor() {
|
||||||
|
// Debug logging for initialization
|
||||||
|
console.log("DEBUG: AccessControl constructor called");
|
||||||
|
console.log("DEBUG: initialWhitelist from import:", initialWhitelist);
|
||||||
|
console.log("DEBUG: typeof initialWhitelist:", typeof initialWhitelist);
|
||||||
|
console.log("DEBUG: initialWhitelist length:", initialWhitelist.length);
|
||||||
|
|
||||||
|
// Initialize empty sets
|
||||||
|
this.whitelist = new Set(initialWhitelist);
|
||||||
|
this.blacklist = new Set(initialBlacklist.filter((x) => x)); // Filter out empty strings
|
||||||
|
|
||||||
|
// Debug the sets
|
||||||
|
console.log("DEBUG: Whitelist after Set creation:", [...this.whitelist]);
|
||||||
|
console.log("DEBUG: Blacklist after Set creation:", [...this.blacklist]);
|
||||||
|
|
||||||
|
// Save to localStorage
|
||||||
|
this.saveWhitelist();
|
||||||
|
this.saveBlacklist();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rest of the class remains the same...
|
||||||
|
loadWhitelist() {
|
||||||
|
try {
|
||||||
|
const stored = localStorage.getItem("bitvid_whitelist");
|
||||||
|
return stored ? JSON.parse(stored) : [];
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error loading whitelist:", error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadBlacklist() {
|
||||||
|
try {
|
||||||
|
const stored = localStorage.getItem("bitvid_blacklist");
|
||||||
|
return stored ? JSON.parse(stored) : [];
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error loading blacklist:", error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveWhitelist() {
|
||||||
|
try {
|
||||||
|
localStorage.setItem(
|
||||||
|
"bitvid_whitelist",
|
||||||
|
JSON.stringify([...this.whitelist])
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error saving whitelist:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveBlacklist() {
|
||||||
|
try {
|
||||||
|
localStorage.setItem(
|
||||||
|
"bitvid_blacklist",
|
||||||
|
JSON.stringify([...this.blacklist])
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error saving blacklist:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addToWhitelist(npub) {
|
||||||
|
if (!this.isValidNpub(npub)) {
|
||||||
|
throw new Error("Invalid npub format");
|
||||||
|
}
|
||||||
|
this.whitelist.add(npub);
|
||||||
|
this.saveWhitelist();
|
||||||
|
if (isDevMode) console.log(`Added ${npub} to whitelist`);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeFromWhitelist(npub) {
|
||||||
|
this.whitelist.delete(npub);
|
||||||
|
this.saveWhitelist();
|
||||||
|
if (isDevMode) console.log(`Removed ${npub} from whitelist`);
|
||||||
|
}
|
||||||
|
|
||||||
|
addToBlacklist(npub) {
|
||||||
|
if (!this.isValidNpub(npub)) {
|
||||||
|
throw new Error("Invalid npub format");
|
||||||
|
}
|
||||||
|
this.blacklist.add(npub);
|
||||||
|
this.saveBlacklist();
|
||||||
|
if (isDevMode) console.log(`Added ${npub} to blacklist`);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeFromBlacklist(npub) {
|
||||||
|
this.blacklist.delete(npub);
|
||||||
|
this.saveBlacklist();
|
||||||
|
if (isDevMode) console.log(`Removed ${npub} from blacklist`);
|
||||||
|
}
|
||||||
|
|
||||||
|
isWhitelisted(npub) {
|
||||||
|
const result = this.whitelist.has(npub);
|
||||||
|
if (isDevMode)
|
||||||
|
console.log(
|
||||||
|
`Checking if ${npub} is whitelisted:`,
|
||||||
|
result,
|
||||||
|
"Current whitelist:",
|
||||||
|
[...this.whitelist]
|
||||||
|
);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
isBlacklisted(npub) {
|
||||||
|
return this.blacklist.has(npub);
|
||||||
|
}
|
||||||
|
|
||||||
|
canAccess(npub) {
|
||||||
|
if (this.isBlacklisted(npub)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const canAccess = !isWhitelistEnabled || this.isWhitelisted(npub);
|
||||||
|
if (isDevMode) console.log(`Checking access for ${npub}:`, canAccess);
|
||||||
|
return canAccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
filterVideos(videos) {
|
||||||
|
return videos.filter((video) => {
|
||||||
|
try {
|
||||||
|
const npub = window.NostrTools.nip19.npubEncode(video.pubkey);
|
||||||
|
return !this.isBlacklisted(npub);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error filtering video:", error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
isValidNpub(npub) {
|
||||||
|
try {
|
||||||
|
return npub.startsWith("npub1") && npub.length === 63;
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getWhitelist() {
|
||||||
|
return [...this.whitelist];
|
||||||
|
}
|
||||||
|
|
||||||
|
getBlacklist() {
|
||||||
|
return [...this.blacklist];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const accessControl = new AccessControl();
|
@@ -1,3 +1,4 @@
|
|||||||
// js/config.js
|
// js/config.js
|
||||||
|
|
||||||
export const isDevMode = true; // Set to false for production
|
export const isDevMode = true; // Set to false for production
|
||||||
|
export const isWhitelistEnabled = true; // Set to false to allow all non-blacklisted users
|
||||||
|
13
src/js/lists.js
Normal file
13
src/js/lists.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// js/lists.js
|
||||||
|
|
||||||
|
const npubs = [
|
||||||
|
"npub13yarr7j6vjqjjkahd63dmr27curypehx45ucue286ac7sft27y0srnpmpe",
|
||||||
|
"npub15jnttpymeytm80hatjqcvhhqhzrhx6gxp8pq0wn93rhnu8s9h9dsha32lx",
|
||||||
|
"npub1j37gc05qpqzyrmdc5vetsc9h5qtstas7tr25j0n9sdpqxghz6m4q2ej6n8",
|
||||||
|
"npub1epvnvv3kskvpnmpqgnm2atevsmdferhp7dg2s0yc7uc0hdmqmgssx09tu2",
|
||||||
|
];
|
||||||
|
|
||||||
|
console.log("DEBUG: lists.js loaded, npubs:", npubs);
|
||||||
|
|
||||||
|
export const initialWhitelist = npubs;
|
||||||
|
export const initialBlacklist = [""];
|
1049
src/js/nostr.js
1049
src/js/nostr.js
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user