Initial commit
This commit is contained in:
		
							
								
								
									
										130
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,130 @@
 | 
				
			|||||||
 | 
					# Logs
 | 
				
			||||||
 | 
					logs
 | 
				
			||||||
 | 
					*.log
 | 
				
			||||||
 | 
					npm-debug.log*
 | 
				
			||||||
 | 
					yarn-debug.log*
 | 
				
			||||||
 | 
					yarn-error.log*
 | 
				
			||||||
 | 
					lerna-debug.log*
 | 
				
			||||||
 | 
					.pnpm-debug.log*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Diagnostic reports (https://nodejs.org/api/report.html)
 | 
				
			||||||
 | 
					report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Runtime data
 | 
				
			||||||
 | 
					pids
 | 
				
			||||||
 | 
					*.pid
 | 
				
			||||||
 | 
					*.seed
 | 
				
			||||||
 | 
					*.pid.lock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Directory for instrumented libs generated by jscoverage/JSCover
 | 
				
			||||||
 | 
					lib-cov
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Coverage directory used by tools like istanbul
 | 
				
			||||||
 | 
					coverage
 | 
				
			||||||
 | 
					*.lcov
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# nyc test coverage
 | 
				
			||||||
 | 
					.nyc_output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
 | 
				
			||||||
 | 
					.grunt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Bower dependency directory (https://bower.io/)
 | 
				
			||||||
 | 
					bower_components
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# node-waf configuration
 | 
				
			||||||
 | 
					.lock-wscript
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Compiled binary addons (https://nodejs.org/api/addons.html)
 | 
				
			||||||
 | 
					build/Release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Dependency directories
 | 
				
			||||||
 | 
					node_modules/
 | 
				
			||||||
 | 
					jspm_packages/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Snowpack dependency directory (https://snowpack.dev/)
 | 
				
			||||||
 | 
					web_modules/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TypeScript cache
 | 
				
			||||||
 | 
					*.tsbuildinfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Optional npm cache directory
 | 
				
			||||||
 | 
					.npm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Optional eslint cache
 | 
				
			||||||
 | 
					.eslintcache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Optional stylelint cache
 | 
				
			||||||
 | 
					.stylelintcache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Microbundle cache
 | 
				
			||||||
 | 
					.rpt2_cache/
 | 
				
			||||||
 | 
					.rts2_cache_cjs/
 | 
				
			||||||
 | 
					.rts2_cache_es/
 | 
				
			||||||
 | 
					.rts2_cache_umd/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Optional REPL history
 | 
				
			||||||
 | 
					.node_repl_history
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Output of 'npm pack'
 | 
				
			||||||
 | 
					*.tgz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Yarn Integrity file
 | 
				
			||||||
 | 
					.yarn-integrity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dotenv environment variable files
 | 
				
			||||||
 | 
					.env
 | 
				
			||||||
 | 
					.env.development.local
 | 
				
			||||||
 | 
					.env.test.local
 | 
				
			||||||
 | 
					.env.production.local
 | 
				
			||||||
 | 
					.env.local
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# parcel-bundler cache (https://parceljs.org/)
 | 
				
			||||||
 | 
					.cache
 | 
				
			||||||
 | 
					.parcel-cache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Next.js build output
 | 
				
			||||||
 | 
					.next
 | 
				
			||||||
 | 
					out
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Nuxt.js build / generate output
 | 
				
			||||||
 | 
					.nuxt
 | 
				
			||||||
 | 
					dist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Gatsby files
 | 
				
			||||||
 | 
					.cache/
 | 
				
			||||||
 | 
					# Comment in the public line in if your project uses Gatsby and not Next.js
 | 
				
			||||||
 | 
					# https://nextjs.org/blog/next-9-1#public-directory-support
 | 
				
			||||||
 | 
					# public
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# vuepress build output
 | 
				
			||||||
 | 
					.vuepress/dist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# vuepress v2.x temp and cache directory
 | 
				
			||||||
 | 
					.temp
 | 
				
			||||||
 | 
					.cache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Docusaurus cache and generated files
 | 
				
			||||||
 | 
					.docusaurus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Serverless directories
 | 
				
			||||||
 | 
					.serverless/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# FuseBox cache
 | 
				
			||||||
 | 
					.fusebox/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# DynamoDB Local files
 | 
				
			||||||
 | 
					.dynamodb/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TernJS port file
 | 
				
			||||||
 | 
					.tern-port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Stores VSCode versions used for testing VSCode extensions
 | 
				
			||||||
 | 
					.vscode-test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# yarn v2
 | 
				
			||||||
 | 
					.yarn/cache
 | 
				
			||||||
 | 
					.yarn/unplugged
 | 
				
			||||||
 | 
					.yarn/build-state.yml
 | 
				
			||||||
 | 
					.yarn/install-state.gz
 | 
				
			||||||
 | 
					.pnp.*
 | 
				
			||||||
							
								
								
									
										3
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					# Electron Unix Socket Relay
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example project for relaying API requests to a Unix Socket via Electron
 | 
				
			||||||
							
								
								
									
										25
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					  <head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8" />
 | 
				
			||||||
 | 
					    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
 | 
				
			||||||
 | 
					    <meta
 | 
				
			||||||
 | 
					      http-equiv="Content-Security-Policy"
 | 
				
			||||||
 | 
					      content="default-src 'self'; script-src 'self'"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					    <meta
 | 
				
			||||||
 | 
					      http-equiv="X-Content-Security-Policy"
 | 
				
			||||||
 | 
					      content="default-src 'self'; script-src 'self'"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					    <title>Hello from Electron renderer!</title>
 | 
				
			||||||
 | 
					  </head>
 | 
				
			||||||
 | 
					  <body>
 | 
				
			||||||
 | 
					    <h1>Hello from Electron renderer!</h1>
 | 
				
			||||||
 | 
					    <p>👋</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <h2>Data:</h2>
 | 
				
			||||||
 | 
					    <pre id="data">To be replaced...</pre>
 | 
				
			||||||
 | 
					  </body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script src="./renderer.js"></script>
 | 
				
			||||||
							
								
								
									
										44
									
								
								main.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								main.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					const { app, BrowserWindow, ipcMain } = require('electron');
 | 
				
			||||||
 | 
					const http = require('http');
 | 
				
			||||||
 | 
					const path = require('path')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function handleHttpRequest(_, options) {
 | 
				
			||||||
 | 
					    return new Promise((resolve, reject) => {
 | 
				
			||||||
 | 
					        console.log(options);
 | 
				
			||||||
 | 
					        const req = http.request(options, res => {
 | 
				
			||||||
 | 
					            console.log(`Status: ${res.statusCode}`);
 | 
				
			||||||
 | 
					            res.setEncoding('utf-8');
 | 
				
			||||||
 | 
					            res.on('data', data => {
 | 
				
			||||||
 | 
					                console.log(data)
 | 
				
			||||||
 | 
					                resolve(data)
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					            res.on('error', data => {
 | 
				
			||||||
 | 
					                console.error(data)
 | 
				
			||||||
 | 
					                reject(data)
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        req.end();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const createWindow = () => {
 | 
				
			||||||
 | 
					    const win = new BrowserWindow({
 | 
				
			||||||
 | 
					        width: 800,
 | 
				
			||||||
 | 
					        height: 600,
 | 
				
			||||||
 | 
					        webPreferences: {
 | 
				
			||||||
 | 
					            preload: path.join(__dirname, 'preload.js'),
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    win.loadFile('index.html');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app.whenReady().then(() => {
 | 
				
			||||||
 | 
					    createWindow();
 | 
				
			||||||
 | 
					    ipcMain.handle('request', handleHttpRequest);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					app.on('window-all-closed', () => {
 | 
				
			||||||
 | 
					    if (process.platform !== 'darwin') app.quit();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										1423
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1423
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										15
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "electron-ipc-relay",
 | 
				
			||||||
 | 
					  "version": "1.0.0",
 | 
				
			||||||
 | 
					  "description": "",
 | 
				
			||||||
 | 
					  "main": "main.js",
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "start": "electron .",
 | 
				
			||||||
 | 
					    "test": "echo \"Error: no test specified\" && exit 1"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "author": "",
 | 
				
			||||||
 | 
					  "license": "ISC",
 | 
				
			||||||
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
					    "electron": "^23.2.0"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										5
									
								
								preload.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								preload.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					const { contextBridge, ipcRenderer } = require('electron');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					contextBridge.exposeInMainWorld('http', {
 | 
				
			||||||
 | 
					    request: options => ipcRenderer.invoke('request', options),
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										20
									
								
								renderer.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								renderer.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					document.addEventListener("DOMContentLoaded", getData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function getData() {
 | 
				
			||||||
 | 
					    console.log("Hi from renderer.js!");
 | 
				
			||||||
 | 
					    const dataNode = document.getElementById('data');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function setData(data) {
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					        const text = data ? JSON.stringify(JSON.parse(data), null, 4) : "no data";
 | 
				
			||||||
 | 
					        dataNode.innerText = text;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const options = {
 | 
				
			||||||
 | 
					        socketPath: '/tmp/sample-rest.sock',
 | 
				
			||||||
 | 
					        path: 'http://localhost/WeatherForecast',
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const data = await window.http.request(options);
 | 
				
			||||||
 | 
					    setData(data);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user