fca-priyansh 19.0.1 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitlab-ci.yml +22 -0
- package/CountTime.json +1 -0
- package/Extra/Balancer.js +49 -49
- package/Extra/BroadcastSystem.js +1 -0
- package/Extra/Bypass/956/index.js +233 -233
- package/Extra/Bypass/test/aaaa.json +169 -169
- package/Extra/Bypass/test/index.js +187 -187
- package/Extra/Database/index.js +468 -468
- package/Extra/ExtraAddons.js +82 -82
- package/Extra/ExtraFindUID.js +61 -61
- package/Extra/ExtraGetThread.js +365 -365
- package/Extra/ExtraScreenShot.js +430 -430
- package/Extra/ExtraUptimeRobot.js +142 -38
- package/Extra/Html/Classic/script.js +118 -118
- package/Extra/Html/Classic/style.css +7 -7
- package/Extra/Security/Base/Step_1.js +5 -5
- package/Extra/Security/Base/Step_2.js +22 -22
- package/Extra/Security/Base/Step_3.js +22 -22
- package/Extra/Security/Base/index.js +190 -190
- package/Extra/Security/Index.js +4 -4
- package/Extra/Security/Step_1.js +5 -5
- package/Extra/Security/Step_2.js +22 -22
- package/Extra/Security/Step_3.js +22 -22
- package/Extra/Src/Change_Environment.js +24 -24
- package/Extra/Src/Check_Update.js +66 -66
- package/Extra/Src/History.js +114 -114
- package/Extra/Src/Instant_Update.js +64 -64
- package/Extra/Src/Last-Run.js +64 -64
- package/Extra/Src/Premium.js +81 -81
- package/Extra/Src/Websocket.js +212 -212
- package/Extra/Src/uuid.js +137 -137
- package/Func/AcceptAgreement.js +31 -31
- package/Func/ClearCache.js +64 -64
- package/Func/ReportV1.js +54 -54
- package/LICENSE +21 -21
- package/Language/index.json +228 -228
- package/Main.js +1 -1290
- package/README.md +198 -198
- package/broadcast.js +1 -44
- package/errorHandler.js +151 -0
- package/index.js +1 -448
- package/logger.js +69 -66
- package/package.json +99 -98
- package/src/Dev_Horizon_Data.js +124 -124
- package/src/Dev_getThreadInfoOLD.js +421 -421
- package/src/Dev_shareTest2.js +68 -68
- package/src/Dev_shareTest3.js +71 -71
- package/src/Premium.js +24 -24
- package/src/Screenshot.js +82 -82
- package/src/addExternalModule.js +16 -16
- package/src/addUserToGroup.js +79 -79
- package/src/changeAdminStatus.js +79 -79
- package/src/changeArchivedStatus.js +41 -41
- package/src/changeAvt.js +84 -84
- package/src/changeBio.js +65 -65
- package/src/changeBlockedStatus.js +36 -36
- package/src/changeGroupImage.js +106 -106
- package/src/changeNickname.js +45 -45
- package/src/changeThreadColor.js +62 -62
- package/src/changeThreadEmoji.js +42 -42
- package/src/changeThreadTheme.js +263 -0
- package/src/comment.js +244 -0
- package/src/createNewGroup.js +70 -70
- package/src/createPoll.js +60 -60
- package/src/deleteMessage.js +45 -45
- package/src/deleteThread.js +43 -43
- package/src/editMessage.js +71 -71
- package/src/follow.js +119 -0
- package/src/forwardAttachment.js +48 -48
- package/src/friend.js +383 -0
- package/src/getAccessToken.js +27 -27
- package/src/getCurrentUserID.js +7 -7
- package/src/getEmojiUrl.js +27 -27
- package/src/getFriendsList.js +73 -73
- package/src/getMessage.js +102 -102
- package/src/getPendingFriendRequests.js +45 -0
- package/src/getThreadHistory.js +537 -537
- package/src/getThreadInfo.js +424 -423
- package/src/getThreadInfoOLD.js +421 -421
- package/src/getThreadList.js +213 -213
- package/src/getThreadMain.js +219 -219
- package/src/getThreadPictures.js +59 -59
- package/src/getUID.js +58 -58
- package/src/getUserID.js +62 -62
- package/src/getUserInfo.js +112 -112
- package/src/getUserInfoMain.js +64 -64
- package/src/getUserInfoV2.js +31 -31
- package/src/getUserInfoV3.js +62 -62
- package/src/getUserInfoV4.js +54 -54
- package/src/getUserInfoV5.js +60 -60
- package/src/handleFriendRequest.js +46 -46
- package/src/handleMessageRequest.js +49 -49
- package/src/httpGet.js +49 -49
- package/src/httpPost.js +48 -48
- package/src/httpPostFormData.js +40 -40
- package/src/listenMqtt.js +1 -956
- package/src/listenMqttV1.js +832 -846
- package/src/logout.js +68 -68
- package/src/markAsDelivered.js +48 -48
- package/src/markAsRead.js +70 -70
- package/src/markAsReadAll.js +42 -42
- package/src/markAsSeen.js +51 -51
- package/src/muteThread.js +47 -47
- package/src/notes.js +279 -0
- package/src/removeUserFromGroup.js +49 -49
- package/src/resolvePhotoUrl.js +37 -37
- package/src/searchForThread.js +43 -43
- package/src/sendMention.js +325 -0
- package/src/sendMessage.js +1 -386
- package/src/sendMqttMessage.js +70 -70
- package/src/sendTypingIndicator.js +79 -80
- package/src/setMessageReaction.js +109 -109
- package/src/setPostReaction.js +101 -101
- package/src/setTitle.js +74 -74
- package/src/share.js +98 -0
- package/src/shareContact.js +55 -55
- package/src/shareLink.js +58 -58
- package/src/stickers.js +525 -0
- package/src/story.js +267 -0
- package/src/threadColors.js +38 -38
- package/src/unfriend.js +43 -43
- package/src/unsendMessage.js +47 -47
- package/src/unsendMqttMessage.js +65 -65
- package/test/data/shareAttach.js +146 -146
- package/test/data/test.txt +7 -7
- package/test/example-config.json +18 -18
- package/test/test-page.js +140 -140
- package/test/test.js +385 -385
- package/test/testv2.js +2 -2
- package/userAgentManager.js +129 -0
- package/utils.js +1 -3077
- package/.github/workflows/publish.yml +0 -20
- package/Extra/Src/Release_Memory.js +0 -160
- package/Extra/Src/test.js +0 -28
- package/SECURITY.md +0 -17
|
@@ -1,38 +1,142 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const logger = require("../logger");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const logger = require("../logger");
|
|
4
|
+
|
|
5
|
+
// Detect hosting platform and get URL
|
|
6
|
+
function detectPlatformAndURL() {
|
|
7
|
+
// Replit
|
|
8
|
+
if (process.env.REPL_SLUG && process.env.REPL_OWNER) {
|
|
9
|
+
return {
|
|
10
|
+
platform: 'Replit',
|
|
11
|
+
url: `https://${process.env.REPL_SLUG}.${process.env.REPL_OWNER}.repl.co`
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Render
|
|
16
|
+
if (process.env.RENDER_SERVICE_NAME || process.env.RENDER) {
|
|
17
|
+
const serviceName = process.env.RENDER_SERVICE_NAME || process.env.RENDER_EXTERNAL_HOSTNAME;
|
|
18
|
+
if (serviceName) {
|
|
19
|
+
return {
|
|
20
|
+
platform: 'Render',
|
|
21
|
+
url: `https://${serviceName}.onrender.com`
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Railway
|
|
27
|
+
if (process.env.RAILWAY_STATIC_URL || process.env.RAILWAY_PUBLIC_DOMAIN) {
|
|
28
|
+
const domain = process.env.RAILWAY_STATIC_URL || process.env.RAILWAY_PUBLIC_DOMAIN;
|
|
29
|
+
return {
|
|
30
|
+
platform: 'Railway',
|
|
31
|
+
url: domain.startsWith('http') ? domain : `https://${domain}`
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// GitHub Actions (usually not used for hosting but for CI/CD)
|
|
36
|
+
if (process.env.GITHUB_ACTIONS) {
|
|
37
|
+
return {
|
|
38
|
+
platform: 'GitHub Actions',
|
|
39
|
+
url: null // No URL for GitHub Actions
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Generic detection - check for common hosting env vars
|
|
44
|
+
if (process.env.PORT && (process.env.HOST || process.env.HOSTNAME)) {
|
|
45
|
+
const host = process.env.HOST || process.env.HOSTNAME;
|
|
46
|
+
return {
|
|
47
|
+
platform: 'Generic Hosting',
|
|
48
|
+
url: `https://${host}`
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Check for custom URL in config
|
|
53
|
+
if (global.Fca.Require.Priyansh.UptimeURL) {
|
|
54
|
+
return {
|
|
55
|
+
platform: 'Custom URL',
|
|
56
|
+
url: global.Fca.Require.Priyansh.UptimeURL
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
module.exports = function() {
|
|
64
|
+
var Logger = global.Fca.Require.logger;
|
|
65
|
+
var Value = global.Fca.Require.Priyansh;
|
|
66
|
+
|
|
67
|
+
// Skip if uptime is disabled
|
|
68
|
+
if (!Value.Uptime) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
switch (process.platform) {
|
|
73
|
+
case 'win32': {
|
|
74
|
+
// Windows - only support if custom URL provided
|
|
75
|
+
if (Value.UptimeURL) {
|
|
76
|
+
logger.Normal(`✅ Uptime monitoring enabled for custom URL`);
|
|
77
|
+
logger.Info(`🔗 URL: ${Value.UptimeURL}`);
|
|
78
|
+
return startUptimeMonitoring(Value.UptimeURL, 'Windows (Custom)');
|
|
79
|
+
} else {
|
|
80
|
+
logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
|
|
81
|
+
logger.Info('💡 Tip: Set "UptimeURL" in PriyanshFca.json to enable uptime monitoring');
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case 'darwin': {
|
|
86
|
+
// macOS - only support if custom URL provided
|
|
87
|
+
if (Value.UptimeURL) {
|
|
88
|
+
logger.Normal(`✅ Uptime monitoring enabled for custom URL`);
|
|
89
|
+
logger.Info(`🔗 URL: ${Value.UptimeURL}`);
|
|
90
|
+
return startUptimeMonitoring(Value.UptimeURL, 'macOS (Custom)');
|
|
91
|
+
} else {
|
|
92
|
+
logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
|
|
93
|
+
logger.Info('💡 Tip: Set "UptimeURL" in PriyanshFca.json to enable uptime monitoring');
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
case 'linux': {
|
|
98
|
+
// Linux - auto-detect platform or use custom URL
|
|
99
|
+
const platformInfo = detectPlatformAndURL();
|
|
100
|
+
|
|
101
|
+
if (platformInfo && platformInfo.url) {
|
|
102
|
+
logger.Normal(`✅ Uptime monitoring enabled`);
|
|
103
|
+
logger.Info(`🌐 Platform: ${platformInfo.platform}`);
|
|
104
|
+
logger.Info(`🔗 URL: ${platformInfo.url}`);
|
|
105
|
+
return startUptimeMonitoring(platformInfo.url, platformInfo.platform);
|
|
106
|
+
} else if (platformInfo && !platformInfo.url) {
|
|
107
|
+
logger.Warning(`⚠️ ${platformInfo.platform} detected but no URL available`);
|
|
108
|
+
logger.Info('💡 Set "UptimeURL" in PriyanshFca.json for custom URL monitoring');
|
|
109
|
+
} else {
|
|
110
|
+
logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
|
|
111
|
+
logger.Info('💡 Supported: Replit, Render, Railway');
|
|
112
|
+
logger.Info('💡 Or set "UptimeURL" in PriyanshFca.json for custom monitoring');
|
|
113
|
+
}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
default:
|
|
117
|
+
Logger.Warning(global.Fca.Require.Language.ExtraUpTime.NotSupport);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
function startUptimeMonitoring(url, platform) {
|
|
122
|
+
var Fetch = global.Fca.Require.Fetch;
|
|
123
|
+
var logger = global.Fca.Require.logger;
|
|
124
|
+
|
|
125
|
+
// Initial ping
|
|
126
|
+
setTimeout(() => {
|
|
127
|
+
Fetch.get(url).catch(err => {
|
|
128
|
+
logger.Warning(`⚠️ Initial uptime ping failed: ${err.message}`);
|
|
129
|
+
});
|
|
130
|
+
}, 5000);
|
|
131
|
+
|
|
132
|
+
// Periodic ping every 5 minutes
|
|
133
|
+
return setInterval(function() {
|
|
134
|
+
Fetch.get(url)
|
|
135
|
+
.then(() => {
|
|
136
|
+
// Silent success
|
|
137
|
+
})
|
|
138
|
+
.catch((err) => {
|
|
139
|
+
logger.Warning(`⚠️ Uptime ping failed: ${err.message}`);
|
|
140
|
+
});
|
|
141
|
+
}, 5 * 60 * 1000); // 5 minutes
|
|
142
|
+
}
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
var c = document.getElementById("myCanvas");
|
|
2
|
-
var ctx = c.getContext("2d");
|
|
3
|
-
var mask;
|
|
4
|
-
|
|
5
|
-
var pointCount = 500;
|
|
6
|
-
var str = "
|
|
7
|
-
var fontStr = "bold 100pt Helvetica Neue, Helvetica, Arial, sans-serif";
|
|
8
|
-
|
|
9
|
-
ctx.font = fontStr;
|
|
10
|
-
ctx.textAlign = "auto";
|
|
11
|
-
c.width = (ctx.measureText(str).width);
|
|
12
|
-
c.height = 100; // Set to font size
|
|
13
|
-
|
|
14
|
-
var whitePixels = [];
|
|
15
|
-
var points = [];
|
|
16
|
-
var point = function(x,y,vx,vy){
|
|
17
|
-
this.x = x;
|
|
18
|
-
this.y = y;
|
|
19
|
-
this.vx = vx || 1;
|
|
20
|
-
this.vy = vy || 1;
|
|
21
|
-
};
|
|
22
|
-
point.prototype.update = function() {
|
|
23
|
-
ctx.beginPath();
|
|
24
|
-
ctx.fillStyle = "#95a5a6";
|
|
25
|
-
ctx.arc(this.x,this.y,1,0,2*Math.PI);
|
|
26
|
-
ctx.fill();
|
|
27
|
-
ctx.closePath();
|
|
28
|
-
|
|
29
|
-
// Change direction if running into black pixel
|
|
30
|
-
if (this.x+this.vx >= c.width || this.x+this.vx < 0 || mask.data[coordsToI(this.x+this.vx, this.y, mask.width)] != 255) {
|
|
31
|
-
this.vx *= -1;
|
|
32
|
-
this.x += this.vx*2;
|
|
33
|
-
}
|
|
34
|
-
if (this.y+this.vy >= c.height || this.y+this.vy < 0 || mask.data[coordsToI(this.x, this.y+this.vy, mask.width)] != 255) {
|
|
35
|
-
this.vy *= -1;
|
|
36
|
-
this.y += this.vy*2;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
for (var k = 0, m = points.length; k<m; k++) {
|
|
40
|
-
if (points[k]===this) continue;
|
|
41
|
-
|
|
42
|
-
var d = Math.sqrt(Math.pow(this.x-points[k].x,2)+Math.pow(this.y-points[k].y,2));
|
|
43
|
-
if (d < 5) {
|
|
44
|
-
ctx.lineWidth = .2;
|
|
45
|
-
ctx.beginPath();
|
|
46
|
-
ctx.moveTo(this.x,this.y);
|
|
47
|
-
ctx.lineTo(points[k].x,points[k].y);
|
|
48
|
-
ctx.stroke();
|
|
49
|
-
}
|
|
50
|
-
if (d < 20) {
|
|
51
|
-
ctx.lineWidth = .1;
|
|
52
|
-
ctx.beginPath();
|
|
53
|
-
ctx.moveTo(this.x,this.y);
|
|
54
|
-
ctx.lineTo(points[k].x,points[k].y);
|
|
55
|
-
ctx.stroke();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
this.x += this.vx;
|
|
60
|
-
this.y += this.vy;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
function loop() {
|
|
64
|
-
ctx.clearRect(0,0,c.width,c.height);
|
|
65
|
-
for (var k = 0, m = points.length; k < m; k++) {
|
|
66
|
-
points[k].update();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function init() {
|
|
71
|
-
// Draw text
|
|
72
|
-
ctx.beginPath();
|
|
73
|
-
ctx.fillStyle = "#000";
|
|
74
|
-
ctx.rect(0,0,c.width,c.height);
|
|
75
|
-
ctx.fill();
|
|
76
|
-
ctx.font = fontStr;
|
|
77
|
-
ctx.textAlign = "left";
|
|
78
|
-
ctx.fillStyle = "#fff";
|
|
79
|
-
ctx.fillText(str,0,c.height/2+(c.height / 2));
|
|
80
|
-
ctx.closePath();
|
|
81
|
-
|
|
82
|
-
// Save mask
|
|
83
|
-
mask = ctx.getImageData(0,0,c.width,c.height);
|
|
84
|
-
|
|
85
|
-
// Draw background
|
|
86
|
-
ctx.clearRect(0,0,c.width,c.height);
|
|
87
|
-
|
|
88
|
-
// Save all white pixels in an array
|
|
89
|
-
for (var i = 0; i < mask.data.length; i += 4) {
|
|
90
|
-
if (mask.data[i] == 255 && mask.data[i+1] == 255 && mask.data[i+2] == 255 && mask.data[i+3] == 255) {
|
|
91
|
-
whitePixels.push([iToX(i,mask.width),iToY(i,mask.width)]);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
for (var k = 0; k < pointCount; k++) {
|
|
96
|
-
addPoint();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function addPoint() {
|
|
101
|
-
var spawn = whitePixels[Math.floor(Math.random()*whitePixels.length)];
|
|
102
|
-
|
|
103
|
-
var p = new point(spawn[0],spawn[1], Math.floor(Math.random()*2-1), Math.floor(Math.random()*2-1));
|
|
104
|
-
points.push(p);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
function iToX(i,w) {
|
|
108
|
-
return ((i%(4*w))/4);
|
|
109
|
-
}
|
|
110
|
-
function iToY(i,w) {
|
|
111
|
-
return (Math.floor(i/(4*w)));
|
|
112
|
-
}
|
|
113
|
-
function coordsToI(x,y,w) {
|
|
114
|
-
return ((mask.width*y)+x)*4;
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
setInterval(loop,50);
|
|
1
|
+
var c = document.getElementById("myCanvas");
|
|
2
|
+
var ctx = c.getContext("2d");
|
|
3
|
+
var mask;
|
|
4
|
+
|
|
5
|
+
var pointCount = 500;
|
|
6
|
+
var str = "PriyanshFca";
|
|
7
|
+
var fontStr = "bold 100pt Helvetica Neue, Helvetica, Arial, sans-serif";
|
|
8
|
+
|
|
9
|
+
ctx.font = fontStr;
|
|
10
|
+
ctx.textAlign = "auto";
|
|
11
|
+
c.width = (ctx.measureText(str).width);
|
|
12
|
+
c.height = 100; // Set to font size
|
|
13
|
+
|
|
14
|
+
var whitePixels = [];
|
|
15
|
+
var points = [];
|
|
16
|
+
var point = function(x,y,vx,vy){
|
|
17
|
+
this.x = x;
|
|
18
|
+
this.y = y;
|
|
19
|
+
this.vx = vx || 1;
|
|
20
|
+
this.vy = vy || 1;
|
|
21
|
+
};
|
|
22
|
+
point.prototype.update = function() {
|
|
23
|
+
ctx.beginPath();
|
|
24
|
+
ctx.fillStyle = "#95a5a6";
|
|
25
|
+
ctx.arc(this.x,this.y,1,0,2*Math.PI);
|
|
26
|
+
ctx.fill();
|
|
27
|
+
ctx.closePath();
|
|
28
|
+
|
|
29
|
+
// Change direction if running into black pixel
|
|
30
|
+
if (this.x+this.vx >= c.width || this.x+this.vx < 0 || mask.data[coordsToI(this.x+this.vx, this.y, mask.width)] != 255) {
|
|
31
|
+
this.vx *= -1;
|
|
32
|
+
this.x += this.vx*2;
|
|
33
|
+
}
|
|
34
|
+
if (this.y+this.vy >= c.height || this.y+this.vy < 0 || mask.data[coordsToI(this.x, this.y+this.vy, mask.width)] != 255) {
|
|
35
|
+
this.vy *= -1;
|
|
36
|
+
this.y += this.vy*2;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
for (var k = 0, m = points.length; k<m; k++) {
|
|
40
|
+
if (points[k]===this) continue;
|
|
41
|
+
|
|
42
|
+
var d = Math.sqrt(Math.pow(this.x-points[k].x,2)+Math.pow(this.y-points[k].y,2));
|
|
43
|
+
if (d < 5) {
|
|
44
|
+
ctx.lineWidth = .2;
|
|
45
|
+
ctx.beginPath();
|
|
46
|
+
ctx.moveTo(this.x,this.y);
|
|
47
|
+
ctx.lineTo(points[k].x,points[k].y);
|
|
48
|
+
ctx.stroke();
|
|
49
|
+
}
|
|
50
|
+
if (d < 20) {
|
|
51
|
+
ctx.lineWidth = .1;
|
|
52
|
+
ctx.beginPath();
|
|
53
|
+
ctx.moveTo(this.x,this.y);
|
|
54
|
+
ctx.lineTo(points[k].x,points[k].y);
|
|
55
|
+
ctx.stroke();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
this.x += this.vx;
|
|
60
|
+
this.y += this.vy;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
function loop() {
|
|
64
|
+
ctx.clearRect(0,0,c.width,c.height);
|
|
65
|
+
for (var k = 0, m = points.length; k < m; k++) {
|
|
66
|
+
points[k].update();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function init() {
|
|
71
|
+
// Draw text
|
|
72
|
+
ctx.beginPath();
|
|
73
|
+
ctx.fillStyle = "#000";
|
|
74
|
+
ctx.rect(0,0,c.width,c.height);
|
|
75
|
+
ctx.fill();
|
|
76
|
+
ctx.font = fontStr;
|
|
77
|
+
ctx.textAlign = "left";
|
|
78
|
+
ctx.fillStyle = "#fff";
|
|
79
|
+
ctx.fillText(str,0,c.height/2+(c.height / 2));
|
|
80
|
+
ctx.closePath();
|
|
81
|
+
|
|
82
|
+
// Save mask
|
|
83
|
+
mask = ctx.getImageData(0,0,c.width,c.height);
|
|
84
|
+
|
|
85
|
+
// Draw background
|
|
86
|
+
ctx.clearRect(0,0,c.width,c.height);
|
|
87
|
+
|
|
88
|
+
// Save all white pixels in an array
|
|
89
|
+
for (var i = 0; i < mask.data.length; i += 4) {
|
|
90
|
+
if (mask.data[i] == 255 && mask.data[i+1] == 255 && mask.data[i+2] == 255 && mask.data[i+3] == 255) {
|
|
91
|
+
whitePixels.push([iToX(i,mask.width),iToY(i,mask.width)]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
for (var k = 0; k < pointCount; k++) {
|
|
96
|
+
addPoint();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function addPoint() {
|
|
101
|
+
var spawn = whitePixels[Math.floor(Math.random()*whitePixels.length)];
|
|
102
|
+
|
|
103
|
+
var p = new point(spawn[0],spawn[1], Math.floor(Math.random()*2-1), Math.floor(Math.random()*2-1));
|
|
104
|
+
points.push(p);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function iToX(i,w) {
|
|
108
|
+
return ((i%(4*w))/4);
|
|
109
|
+
}
|
|
110
|
+
function iToY(i,w) {
|
|
111
|
+
return (Math.floor(i/(4*w)));
|
|
112
|
+
}
|
|
113
|
+
function coordsToI(x,y,w) {
|
|
114
|
+
return ((mask.width*y)+x)*4;
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
setInterval(loop,50);
|
|
119
119
|
init();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
html {
|
|
2
|
-
background:#ecf0f1;
|
|
3
|
-
}
|
|
4
|
-
canvas {
|
|
5
|
-
display:block;
|
|
6
|
-
margin:auto;
|
|
7
|
-
background:#ecf0f1;
|
|
1
|
+
html {
|
|
2
|
+
background:#ecf0f1;
|
|
3
|
+
}
|
|
4
|
+
canvas {
|
|
5
|
+
display:block;
|
|
6
|
+
margin:auto;
|
|
7
|
+
background:#ecf0f1;
|
|
8
8
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var CryptoJS = require("crypto-js");
|
|
4
|
-
module.exports.EncryptState = function EncryptState(Data,PassWord) { return CryptoJS.AES.encrypt(Data, PassWord).toString(); };
|
|
5
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var CryptoJS = require("crypto-js");
|
|
4
|
+
module.exports.EncryptState = function EncryptState(Data,PassWord) { return CryptoJS.AES.encrypt(Data, PassWord).toString(); };
|
|
5
|
+
|
|
6
6
|
module.exports.DecryptState = function DecryptState(Data,PassWord) { return CryptoJS.AES.decrypt(Data, PassWord).toString(CryptoJS.enc.Utf8); };
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var CryptoJS = require("crypto-js");
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Encrypt the text using the CryptoJS library and return the encrypted text as a Base64 string.
|
|
7
|
-
* @param Data - The data to be encrypted.
|
|
8
|
-
* @returns A string of characters that represent the encrypted data.
|
|
9
|
-
*/
|
|
10
|
-
module.exports.Encrypt = function Encrypt(Data) {
|
|
11
|
-
return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(Data));
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Decrypt the data using the CryptoJS library, and return the decrypted data as a string.
|
|
16
|
-
* @param Data - The data to be decrypted.
|
|
17
|
-
* @returns The decrypted data.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
module.exports.Decrypt = function Decrypt(Data) {
|
|
21
|
-
return CryptoJS.enc.Base64.parse(Data).toString(CryptoJS.enc.Utf8);
|
|
22
|
-
};
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var CryptoJS = require("crypto-js");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Encrypt the text using the CryptoJS library and return the encrypted text as a Base64 string.
|
|
7
|
+
* @param Data - The data to be encrypted.
|
|
8
|
+
* @returns A string of characters that represent the encrypted data.
|
|
9
|
+
*/
|
|
10
|
+
module.exports.Encrypt = function Encrypt(Data) {
|
|
11
|
+
return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(Data));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Decrypt the data using the CryptoJS library, and return the decrypted data as a string.
|
|
16
|
+
* @param Data - The data to be decrypted.
|
|
17
|
+
* @returns The decrypted data.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
module.exports.Decrypt = function Decrypt(Data) {
|
|
21
|
+
return CryptoJS.enc.Base64.parse(Data).toString(CryptoJS.enc.Utf8);
|
|
22
|
+
};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const crypto = require('crypto');
|
|
4
|
-
const aes = require("aes-js");
|
|
5
|
-
|
|
6
|
-
module.exports.encryptState = function encryptState(data, key) {
|
|
7
|
-
let hashEngine = crypto.createHash("sha256");
|
|
8
|
-
let hashKey = hashEngine.update(key).digest();
|
|
9
|
-
let bytes = aes.utils.utf8.toBytes(data);
|
|
10
|
-
let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
|
|
11
|
-
let encryptedData = aesCtr.encrypt(bytes);
|
|
12
|
-
return aes.utils.hex.fromBytes(encryptedData);
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
module.exports.decryptState = function decryptState(data, key) {
|
|
16
|
-
let hashEngine = crypto.createHash("sha256");
|
|
17
|
-
let hashKey = hashEngine.update(key).digest();
|
|
18
|
-
let encryptedBytes = aes.utils.hex.toBytes(data);
|
|
19
|
-
let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
|
|
20
|
-
let decryptedData = aesCtr.decrypt(encryptedBytes);
|
|
21
|
-
return aes.utils.utf8.fromBytes(decryptedData);
|
|
22
|
-
};
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const crypto = require('crypto');
|
|
4
|
+
const aes = require("aes-js");
|
|
5
|
+
|
|
6
|
+
module.exports.encryptState = function encryptState(data, key) {
|
|
7
|
+
let hashEngine = crypto.createHash("sha256");
|
|
8
|
+
let hashKey = hashEngine.update(key).digest();
|
|
9
|
+
let bytes = aes.utils.utf8.toBytes(data);
|
|
10
|
+
let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
|
|
11
|
+
let encryptedData = aesCtr.encrypt(bytes);
|
|
12
|
+
return aes.utils.hex.fromBytes(encryptedData);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
module.exports.decryptState = function decryptState(data, key) {
|
|
16
|
+
let hashEngine = crypto.createHash("sha256");
|
|
17
|
+
let hashKey = hashEngine.update(key).digest();
|
|
18
|
+
let encryptedBytes = aes.utils.hex.toBytes(data);
|
|
19
|
+
let aesCtr = new aes.ModeOfOperation.ctr(hashKey);
|
|
20
|
+
let decryptedData = aesCtr.decrypt(encryptedBytes);
|
|
21
|
+
return aes.utils.utf8.fromBytes(decryptedData);
|
|
22
|
+
};
|