mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-08-27 21:00:28 +02:00
v0.9.6: InfoNet hashchain, Wormhole gate encryption, mesh reputation, 16 community contributors
Gate messages now propagate via the Infonet hashchain as encrypted blobs — every node syncs them through normal chain sync while only Gate members with MLS keys can decrypt. Added mesh reputation system, peer push workers, voluntary Wormhole opt-in for node participation, fork recovery, killwormhole scripts, obfuscated terminology, and hardened the self-updater to protect encryption keys and chain state during updates. New features: Shodan search, train tracking, Sentinel Hub imagery, 8 new intelligence layers, CCTV expansion to 11,000+ cameras across 6 countries, Mesh Terminal CLI, prediction markets, desktop-shell scaffold, and comprehensive mesh test suite (215 frontend + backend tests passing). Community contributors: @wa1id, @AlborzNazari, @adust09, @Xpirix, @imqdcr, @csysp, @suranyami, @chr0n1x, @johan-martensson, @singularfailure, @smithbh, @OrfeoTerkuci, @deuza, @tm-const, @Elhard1, @ttulttul
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import type { NativeControlHandlerMap } from '../types';
|
||||
|
||||
export function createSettingsHandlers(): Pick<
|
||||
NativeControlHandlerMap,
|
||||
| 'settings.wormhole.get'
|
||||
| 'settings.wormhole.set'
|
||||
| 'settings.privacy.get'
|
||||
| 'settings.privacy.set'
|
||||
| 'settings.api_keys.get'
|
||||
| 'settings.api_keys.set'
|
||||
| 'settings.news.get'
|
||||
| 'settings.news.set'
|
||||
| 'settings.news.reset'
|
||||
> {
|
||||
return {
|
||||
'settings.wormhole.get': async (_payload, _ctx, exec) => exec('/api/settings/wormhole'),
|
||||
'settings.wormhole.set': async (payload, _ctx, exec) =>
|
||||
exec('/api/settings/wormhole', {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'settings.privacy.get': async (_payload, _ctx, exec) =>
|
||||
exec('/api/settings/privacy-profile'),
|
||||
'settings.privacy.set': async (payload, _ctx, exec) =>
|
||||
exec('/api/settings/privacy-profile', {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'settings.api_keys.get': async (_payload, _ctx, exec) => exec('/api/settings/api-keys'),
|
||||
'settings.api_keys.set': async (payload, _ctx, exec) =>
|
||||
exec('/api/settings/api-keys', {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'settings.news.get': async (_payload, _ctx, exec) => exec('/api/settings/news-feeds'),
|
||||
'settings.news.set': async (payload, _ctx, exec) =>
|
||||
exec('/api/settings/news-feeds', {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'settings.news.reset': async (_payload, _ctx, exec) =>
|
||||
exec('/api/settings/news-feeds/reset', {
|
||||
method: 'POST',
|
||||
}),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import type { NativeControlHandlerMap } from '../types';
|
||||
|
||||
export function createUpdateHandlers(): Pick<NativeControlHandlerMap, 'system.update'> {
|
||||
return {
|
||||
'system.update': async (_payload, _ctx, exec) =>
|
||||
exec('/api/system/update', {
|
||||
method: 'POST',
|
||||
}),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
import type { NativeControlHandlerMap } from '../types';
|
||||
|
||||
export function createWormholeHandlers(): Pick<
|
||||
NativeControlHandlerMap,
|
||||
| 'wormhole.status'
|
||||
| 'wormhole.connect'
|
||||
| 'wormhole.disconnect'
|
||||
| 'wormhole.restart'
|
||||
| 'wormhole.gate.enter'
|
||||
| 'wormhole.gate.leave'
|
||||
| 'wormhole.gate.proof'
|
||||
| 'wormhole.gate.personas.get'
|
||||
| 'wormhole.gate.persona.create'
|
||||
| 'wormhole.gate.persona.activate'
|
||||
| 'wormhole.gate.persona.clear'
|
||||
| 'wormhole.gate.key.get'
|
||||
| 'wormhole.gate.key.rotate'
|
||||
| 'wormhole.gate.message.compose'
|
||||
| 'wormhole.gate.message.decrypt'
|
||||
| 'wormhole.gate.message.post'
|
||||
| 'wormhole.gate.messages.decrypt'
|
||||
> {
|
||||
return {
|
||||
'wormhole.status': async (_payload, _ctx, exec) => exec('/api/wormhole/status'),
|
||||
'wormhole.connect': async (_payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/connect', { method: 'POST' }),
|
||||
'wormhole.disconnect': async (_payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/disconnect', { method: 'POST' }),
|
||||
'wormhole.restart': async (_payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/restart', { method: 'POST' }),
|
||||
'wormhole.gate.personas.get': async (payload, _ctx, exec) =>
|
||||
exec(`/api/wormhole/gate/${encodeURIComponent(String(payload?.gate_id || ''))}/personas`),
|
||||
'wormhole.gate.persona.create': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/persona/create', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.persona.activate': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/persona/activate', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.persona.clear': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/persona/clear', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.key.get': async (payload, _ctx, exec) =>
|
||||
exec(`/api/wormhole/gate/${encodeURIComponent(String(payload?.gate_id || ''))}/key`),
|
||||
'wormhole.gate.key.rotate': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/key/rotate', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.message.compose': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/message/compose', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.message.decrypt': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/message/decrypt', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.enter': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/enter', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.leave': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/leave', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.proof': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/proof', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.message.post': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/message/post', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
'wormhole.gate.messages.decrypt': async (payload, _ctx, exec) =>
|
||||
exec('/api/wormhole/gate/messages/decrypt', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload),
|
||||
}),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user