Cleaker
-
+Connecting all points within a fixed distance. Cleaker is a pronoun representing a person, place, or thing in space and time. By defining namespaces based on Cleaker instances, you ensure that each namespace is unique, identifiable, and contextual to the specific user, thus facilitating seamless and meaningful interactions within the network.
+
Install with npm.
npm i cleaker
-Run:
-node src/cleaked.js
-
-You get a Screenshot.
Basic Usage
-
--
Importing Cleaker: Import the Cleaker class by requiring it from where it's defined.
-const Cleaker = require('./cleaker');
+const Cleaker = require('cleaker');
-
-
-Dynamic Interaction:
-Enable dynamic interactions within spaces, allowing different interpretations of the same namespace based on user context.
-Implementing the concept of "Spaces" in Cleaker, where data within a certain space can be represented or interpreted differently depending on the user. This paradigm ensures that users can instantiate their unique contextual environment or "space," interacting seamlessly with their data in a user-specific manner.
-Unique Interpretation: In this conceptual space, data representations are unique to the user. For example, the same namespace can hold an image of a cat for one user and an image of a man for another. This dynamic approach ensures tailor-made interactions and experiences for every user.
-Secure and Personalized Interaction: With Cleaker, users are not just interacting with the system; they are establishing their private namespaces, securing their interactions and information uniquely. Every piece of information is secured and can only be read or interpreted by the user who left it.
-Dynamic Interaction refers to the real-time and adaptable interactivity within these spaces, allowing users to interpret and interact with data or elements in ways unique to their context or preferences.
-Example:
-userSpaceInstance.interact({ type: 'click', target: 'image' }); // The interaction will be handled differently based on user’s space and preferences.
-
-Implementation of Namespaces with Cleaker:
-Cleaker being a pronoun representing a person, place, or thing in space and time. By defining namespaces based on Cleaker instances, you ensure that each namespace is unique, identifiable, and contextual to the specific user, thus facilitating seamless and meaningful interactions within the network.
-Namespacing Example:
-If Cleaker is an identifier, like cleaker123
, then a possible namespace could be:
-cleaker123:space:images:cat.jpg
-
-Network Accessibility:
-Yes, by identifying spaces and creating pathname (or namespace) based on Cleaker instances, you can indeed create paths that are reachable to anyone in the network, provided they have the necessary permissions and access rights. This way, each user, with their Cleaker as a unique identifier, can have their namespaces in the decentralized network, allowing them to interact, share, and collaborate in a more personalized and secure manner.
-Authentication
-The process of verifying the identity of a user, system, or application. It answers the question, "Who are you?"
-Cleaker is a pronoun. A person, place or thing is space and time.
-Example: A user logging into a website with a username and password.
-Authorization is the process of granting or denying access to specific resources based on an authenticated user's or system's permissions. It answers the question, "What are you allowed to do?"
-Example: Once logged in, a user might be authorized to read content but not edit it.
-if (cleaked.authenticate('username', 'password')) {
- console.log('Authenticated successfully');
-}
-
-
--
-
Data Signing: Cleaker can also sign data using the sign
method if the user is authenticated.
-if (cleaked.authenticated) {
- const signature = cleaked.sign('some data');
- console.log('Signature:', signature);
-}
-
-
--
-
Device Identification: Cleaker can generate a unique device identifier.
-console.log("Device Identifier:", cleaked.deviceIdentifier);
-
-
-
-Advanced Usage
-The Cleaker class can be extended and customized to add additional functionalities specific to your application. Its methods can be overridden, and new properties can be added as required.
-Remember to refer to the cleaker.js
source code for precise understanding, as implementation details might vary.
-
--
-
Accessing Network Interfaces: You can access details about network interfaces using cleaked.networkInterfaces
. This object contains information about each network interface, including IP addresses.
-console.log(cleaked.networkInterfaces['en0'].details); // Array of network interface details
-console.log(cleaked.networkInterfaces['en0'].ip); // Array of IPv4 addresses
-
-
--
-
Local IP, CPU & Memory Info: Cleaker provides local IP, CPU architecture, model, and memory details.
-console.log("Local IP:", cleaked.localIP);
-console.log("CPU Model:", cleaked.cpu.model);
-console.log("Total Memory:", cleaked.memory.total);
-
-
-
-By employing Cleaker, you gain access to robust features that enhance the security and functionality of your application, enabling streamlined interactions with the operating system and network, and providing essential user management capabilities.
+namespaces
neurons.me
neurons.me/this
Contributing
diff --git a/docs/module-cleaker.html b/docs/module-cleaker.html
index b4de5ec5..478f9396 100644
--- a/docs/module-cleaker.html
+++ b/docs/module-cleaker.html
@@ -5,7 +5,7 @@
...
- Cleaker cleaker
+ Cleaker
diff --git a/docs/notes.md b/docs/notes.md
new file mode 100644
index 00000000..0a985e85
--- /dev/null
+++ b/docs/notes.md
@@ -0,0 +1,88 @@
+# Dynamic Interaction:
+
+### Enable dynamic interactions within spaces, allowing different interpretations of the same namespace based on user context.
+
+Implementing the concept of **"Spaces"** in **Cleaker,** where data within a certain space can be represented or interpreted differently depending on the user. This paradigm ensures that users can instantiate their unique contextual environment or "**space**," interacting seamlessly with their data in a user-specific manner.
+
+**Unique Interpretation:** In this conceptual space, data representations are unique to the user. For example, the same namespace can hold an image of a cat for one user and an image of a man for another. This dynamic approach ensures tailor-made interactions and experiences for every user.
+
+**Secure and Personalized Interaction:** With Cleaker, users are not just interacting with the system; they are establishing their private namespaces, securing their interactions and information uniquely. Every piece of information is secured and can only be read or interpreted by the user who left it.
+
+Dynamic Interaction refers to the real-time and adaptable interactivity within these spaces, allowing users to interpret and interact with data or elements in ways unique to their context or preferences.
+
+#### Example:
+
+```javascript
+userSpaceInstance.interact({ type: 'click', target: 'image' }); // The interaction will be handled differently based on user’s space and preferences.
+```
+
+### Implementation of Namespaces with Cleaker:
+
+Cleaker being a pronoun representing a person, place, or thing in space and time. By defining namespaces based on Cleaker instances, you ensure that each namespace is unique, identifiable, and contextual to the specific user, thus facilitating seamless and meaningful interactions within the network.
+
+#### Namespacing Example:
+
+If Cleaker is an identifier, like `cleaker123`, then a possible namespace could be:
+
+```sh
+cleaker123:space:images:cat.jpg
+```
+
+### Network Accessibility:
+
+Yes, by identifying spaces and creating pathname (or namespace) based on Cleaker instances, you can indeed create paths that are reachable to anyone in the network, provided they have the necessary permissions and access rights. This way, each user, with their Cleaker as a unique identifier, can have their namespaces in the decentralized network, allowing them to interact, share, and collaborate in a more personalized and secure manner.
+
+# Authentication
+
+The process of verifying the identity of a user, system, or application. It answers the question, **"Who are you?"**
+
+**Cleaker** is a pronoun. A **person, place** or **thing** is **space** and **time.**
+
+**Example:** A user logging into a website with a username and password.
+Authorization is the process of granting or denying access to specific resources based on an authenticated user's or system's permissions. It answers the question, **"What are you allowed to do?"**
+
+**Example:** Once logged in, a user might be authorized to read content but not edit it.
+
+ ```js
+if (cleaked.authenticate('username', 'password')) {
+ console.log('Authenticated successfully');
+}
+ ```
+
+6. **Data Signing**: Cleaker can also sign data using the `sign` method if the user is authenticated.
+
+ ```js
+ if (cleaked.authenticated) {
+ const signature = cleaked.sign('some data');
+ console.log('Signature:', signature);
+ }
+ ```
+
+7. **Device Identification**: Cleaker can generate a unique device identifier.
+
+ ```js
+ console.log("Device Identifier:", cleaked.deviceIdentifier);
+ ```
+
+# Advanced Usage
+
+The Cleaker class can be extended and customized to add additional functionalities specific to your application. Its methods can be overridden, and new properties can be added as required.
+
+Remember to refer to the `cleaker.js` source code for precise understanding, as implementation details might vary.
+
+1. **Accessing Network Interfaces**: You can access details about network interfaces using `cleaked.networkInterfaces`. This object contains information about each network interface, including IP addresses.
+
+ ```js
+ console.log(cleaked.networkInterfaces['en0'].details); // Array of network interface details
+ console.log(cleaked.networkInterfaces['en0'].ip); // Array of IPv4 addresses
+ ```
+
+2. **Local IP, CPU & Memory Info**: Cleaker provides local IP, CPU architecture, model, and memory details.
+
+ ```js
+ console.log("Local IP:", cleaked.localIP);
+ console.log("CPU Model:", cleaked.cpu.model);
+ console.log("Total Memory:", cleaked.memory.total);
+ ```
+
+By employing Cleaker, you gain access to robust features that enhance the security and functionality of your application, enabling streamlined interactions with the operating system and network, and providing essential user management capabilities.
\ No newline at end of file
diff --git a/github.css b/github.css
new file mode 100644
index 00000000..b19dafc3
--- /dev/null
+++ b/github.css
@@ -0,0 +1,412 @@
+:root {
+ --side-bar-bg-color: #fafafa;
+ --control-text-color: #777;
+}
+
+@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
+
+/* open-sans-regular - latin-ext_latin */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: normal;
+ src: local('Open Sans Regular'), local('OpenSans-Regular'), url('./github/open-sans-v17-latin-ext_latin-regular.woff2') format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+ }
+ /* open-sans-italic - latin-ext_latin */
+ @font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: normal;
+ src: local('Open Sans Italic'), local('OpenSans-Italic'), url('./github/open-sans-v17-latin-ext_latin-italic.woff2') format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+ }
+ /* open-sans-700 - latin-ext_latin */
+ @font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: bold;
+ src: local('Open Sans Bold'), local('OpenSans-Bold'), url('./github/open-sans-v17-latin-ext_latin-700.woff2') format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+ }
+ /* open-sans-700italic - latin-ext_latin */
+ @font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: bold;
+ src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url('./github/open-sans-v17-latin-ext_latin-700italic.woff2') format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD, U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+ }
+
+html {
+ font-size: 16px;
+ -webkit-font-smoothing: antialiased;
+}
+
+body {
+ font-family: "Open Sans","Clear Sans", "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;
+ color: rgb(51, 51, 51);
+ line-height: 1.6;
+}
+
+#write {
+ max-width: 860px;
+ margin: 0 auto;
+ padding: 30px;
+ padding-bottom: 100px;
+}
+
+@media only screen and (min-width: 1400px) {
+ #write {
+ max-width: 1024px;
+ }
+}
+
+@media only screen and (min-width: 1800px) {
+ #write {
+ max-width: 1200px;
+ }
+}
+
+#write > ul:first-child,
+#write > ol:first-child{
+ margin-top: 30px;
+}
+
+a {
+ color: #4183C4;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ position: relative;
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+ font-weight: bold;
+ line-height: 1.4;
+ cursor: text;
+}
+h1:hover a.anchor,
+h2:hover a.anchor,
+h3:hover a.anchor,
+h4:hover a.anchor,
+h5:hover a.anchor,
+h6:hover a.anchor {
+ text-decoration: none;
+}
+h1 tt,
+h1 code {
+ font-size: inherit;
+}
+h2 tt,
+h2 code {
+ font-size: inherit;
+}
+h3 tt,
+h3 code {
+ font-size: inherit;
+}
+h4 tt,
+h4 code {
+ font-size: inherit;
+}
+h5 tt,
+h5 code {
+ font-size: inherit;
+}
+h6 tt,
+h6 code {
+ font-size: inherit;
+}
+h1 {
+ font-size: 2.25em;
+ line-height: 1.2;
+ border-bottom: 1px solid #eee;
+}
+h2 {
+ font-size: 1.75em;
+ line-height: 1.225;
+ border-bottom: 1px solid #eee;
+}
+
+/*@media print {
+ .typora-export h1,
+ .typora-export h2 {
+ border-bottom: none;
+ padding-bottom: initial;
+ }
+
+ .typora-export h1::after,
+ .typora-export h2::after {
+ content: "";
+ display: block;
+ height: 100px;
+ margin-top: -96px;
+ border-top: 1px solid #eee;
+ }
+}*/
+
+h3 {
+ font-size: 1.5em;
+ line-height: 1.43;
+}
+h4 {
+ font-size: 1.25em;
+}
+h5 {
+ font-size: 1em;
+}
+h6 {
+ font-size: 1em;
+ color: #777;
+}
+p,
+blockquote,
+ul,
+ol,
+dl,
+table{
+ margin: 0.8em 0;
+}
+li>ol,
+li>ul {
+ margin: 0 0;
+}
+hr {
+ height: 2px;
+ padding: 0;
+ margin: 16px 0;
+ background-color: #e7e7e7;
+ border: 0 none;
+ overflow: hidden;
+ box-sizing: content-box;
+}
+
+li p.first {
+ display: inline-block;
+}
+ul,
+ol {
+ padding-left: 30px;
+}
+ul:first-child,
+ol:first-child {
+ margin-top: 0;
+}
+ul:last-child,
+ol:last-child {
+ margin-bottom: 0;
+}
+blockquote {
+ border-left: 4px solid #dfe2e5;
+ padding: 0 15px;
+ color: #777777;
+}
+blockquote blockquote {
+ padding-right: 0;
+}
+table {
+ padding: 0;
+ word-break: initial;
+}
+table tr {
+ border: 1px solid #dfe2e5;
+ margin: 0;
+ padding: 0;
+}
+table tr:nth-child(2n),
+thead {
+ background-color: #f8f8f8;
+}
+table th {
+ font-weight: bold;
+ border: 1px solid #dfe2e5;
+ border-bottom: 0;
+ margin: 0;
+ padding: 6px 13px;
+}
+table td {
+ border: 1px solid #dfe2e5;
+ margin: 0;
+ padding: 6px 13px;
+}
+table th:first-child,
+table td:first-child {
+ margin-top: 0;
+}
+table th:last-child,
+table td:last-child {
+ margin-bottom: 0;
+}
+
+.CodeMirror-lines {
+ padding-left: 4px;
+}
+
+.code-tooltip {
+ box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
+ border-top: 1px solid #eef2f2;
+}
+
+.md-fences,
+code,
+tt {
+ border: 1px solid #e7eaed;
+ background-color: #f8f8f8;
+ border-radius: 3px;
+ padding: 0;
+ padding: 2px 4px 0px 4px;
+ font-size: 0.9em;
+}
+
+code {
+ background-color: #f3f4f4;
+ padding: 0 2px 0 2px;
+}
+
+.md-fences {
+ margin-bottom: 15px;
+ margin-top: 15px;
+ padding-top: 8px;
+ padding-bottom: 6px;
+}
+
+
+.md-task-list-item > input {
+ margin-left: -1.3em;
+}
+
+@media print {
+ html {
+ font-size: 13px;
+ }
+ pre {
+ page-break-inside: avoid;
+ word-wrap: break-word;
+ }
+}
+
+.md-fences {
+ background-color: #f8f8f8;
+}
+#write pre.md-meta-block {
+ padding: 1rem;
+ font-size: 85%;
+ line-height: 1.45;
+ background-color: #f7f7f7;
+ border: 0;
+ border-radius: 3px;
+ color: #777777;
+ margin-top: 0 !important;
+}
+
+.mathjax-block>.code-tooltip {
+ bottom: .375rem;
+}
+
+.md-mathjax-midline {
+ background: #fafafa;
+}
+
+#write>h3.md-focus:before{
+ left: -1.5625rem;
+ top: .375rem;
+}
+#write>h4.md-focus:before{
+ left: -1.5625rem;
+ top: .285714286rem;
+}
+#write>h5.md-focus:before{
+ left: -1.5625rem;
+ top: .285714286rem;
+}
+#write>h6.md-focus:before{
+ left: -1.5625rem;
+ top: .285714286rem;
+}
+.md-image>.md-meta {
+ /*border: 1px solid #ddd;*/
+ border-radius: 3px;
+ padding: 2px 0px 0px 4px;
+ font-size: 0.9em;
+ color: inherit;
+}
+
+.md-tag {
+ color: #a7a7a7;
+ opacity: 1;
+}
+
+.md-toc {
+ margin-top:20px;
+ padding-bottom:20px;
+}
+
+.sidebar-tabs {
+ border-bottom: none;
+}
+
+#typora-quick-open {
+ border: 1px solid #ddd;
+ background-color: #f8f8f8;
+}
+
+#typora-quick-open-item {
+ background-color: #FAFAFA;
+ border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
+ border-style: solid;
+ border-width: 1px;
+}
+
+/** focus mode */
+.on-focus-mode blockquote {
+ border-left-color: rgba(85, 85, 85, 0.12);
+}
+
+header, .context-menu, .megamenu-content, footer{
+ font-family: "Segoe UI", "Arial", sans-serif;
+}
+
+.file-node-content:hover .file-node-icon,
+.file-node-content:hover .file-node-open-state{
+ visibility: visible;
+}
+
+.mac-seamless-mode #typora-sidebar {
+ background-color: #fafafa;
+ background-color: var(--side-bar-bg-color);
+}
+
+.md-lang {
+ color: #b4654d;
+}
+
+/*.html-for-mac {
+ --item-hover-bg-color: #E6F0FE;
+}*/
+
+#md-notification .btn {
+ border: 0;
+}
+
+.dropdown-menu .divider {
+ border-color: #e5e5e5;
+ opacity: 0.4;
+}
+
+.ty-preferences .window-content {
+ background-color: #fafafa;
+}
+
+.ty-preferences .nav-group-item.active {
+ color: white;
+ background: #999;
+}
+
+.menu-item-container a.menu-style-btn {
+ background-color: #f5f8fa;
+ background-image: linear-gradient( 180deg , hsla(0, 0%, 100%, 0.8), hsla(0, 0%, 100%, 0));
+}
\ No newline at end of file
diff --git a/src/cleak.js b/src/cleak.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/cleaker.js b/src/cleaker.js
new file mode 100644
index 00000000..ae2f4571
--- /dev/null
+++ b/src/cleaker.js
@@ -0,0 +1,53 @@
+import os from 'os';
+
+/**
+ * Class representing a Cleaker entity.
+ * @class
+ */
+class Cleaker {
+ /**
+ * Create a Cleaker instance.
+ * @param {string} [me="not me"] - Identifier for the Cleaker instance.
+ * @param {string} [password="no_password"] - Password for the Cleaker instance.
+ * @param {string} [pin="no_pin"] - PIN for the Cleaker instance.
+ * @param {string} [ipAddress="no_ip"] - IP address for the Cleaker instance.
+ * @param {string} [userCountry="no_country"] - Country of the Cleaker instance.
+ * @param {string} [userCity="no_city"] - City of the Cleaker instance.
+ * @param {string} [referer="no_referer"] - Referer of the Cleaker instance.
+ */
+ constructor(me = "not me", password = "no_password", pin = "no_pin", ipAddress = "no_ip", userCountry = "no_country", userCity = "no_city", referer = "no_referer") {
+ this.me = me;
+ this.password = password;
+ this.pin = pin;
+ this.ipAddress = ipAddress;
+ this.userCountry = userCountry;
+ this.userCity = userCity;
+ this.referer = referer;
+ this.username = os.userInfo().username || 'no_username';
+ this.onDate = new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' });
+ this.host_session = this.username;
+ this.hostHome = os.homedir() || 'no_home';
+ }
+}
+
+/**
+ * Function to create and "cleak" a Cleaker instance.
+ * @param {string} me - Identifier for the Cleaker instance.
+ * @param {string} password - Password for the Cleaker instance.
+ * @param {string} ipAddress - IP address for the Cleaker instance.
+ * @param {string} userCountry - Country of the Cleaker instance.
+ * @param {string} userCity - City of the Cleaker instance.
+ * @param {string} referer - Referer of the Cleaker instance.
+ * @returns {Cleaker} A new instance of Cleaker.
+ */
+function cleak(me, password, ipAddress, userCountry, userCity, referer) {
+ // Create a new instance of Cleaker with the provided values
+ const cleakerInstance = new Cleaker(me, password, ipAddress, userCountry, userCity, referer);
+
+ // Perform additional "cleaking" operations if necessary
+ // For example, logging the creation, storing in a database, etc.
+
+ return cleakerInstance; // Return the new "cleaked" Cleaker instance
+}
+
+export { Cleaker, cleak };
diff --git a/src/server.js b/src/server.js
index befe4960..f0f99ced 100644
--- a/src/server.js
+++ b/src/server.js
@@ -1,4 +1,4 @@
-// cleaker/scrc/server.js
+// cleaker/src/server.js
//var connection = postgresql.createConnection({
// host: 'localhost',
import express from 'express';