Skip to content

Instantly share code, notes, and snippets.

@craigphicks
craigphicks / openssh-descrption-of-X11-forwarding.md
Created July 7, 2020 22:11
openssh descrption of X11 forwarding

https://www.openssh.com/features.html

X11 forwarding (which also encrypts X Window System traffic)

X11 forwarding allows the encryption of remote X windows traffic, so that nobody can snoop on your remote xterms or insert malicious commands. The program automatically sets DISPLAY on the server machine, and forwards any X11 connections over the secure channel. Fake Xauthority information is automatically generated and forwarded to the remote machine; the local client automatically examines incoming X11 connections and replaces the fake authorization

async function readStreamToEnd(rstream){
rstream.resume();
let prom=new Promise((resolve,reject)=>{
var buf = Buffer('');
rstream.on('data', function(newbuf) { buf=Buffer.concat([buf,newbuf]); });
rstream.on('end', function() { resolve(buf.toString()); });
rstream.on('error', function(e) { reject(e); });
});
return await prom;
}
#!/bin/bash
# copyright craigphicks 2020 - free to use with due attribution
confirm_args(){
logger -t "confirm_args" -- "#=${#}"
for index in `seq 0 ${#}` ; do
eval item=\$$index
logger -t "confirm_args" -- "[$index] ${item}"
done
}
@craigphicks
craigphicks / makeNonCryptoRandomAlphaNumString.js
Created September 14, 2019 18:26
A non-crypto js function for creating random alphanum strings - no dependencies
function makeNonCryptoRandomAlphaNumString(length) {
function tf(n) {
if (n < 26) return 65 + n
else if (n < 52) return 97 + n - 26
else return 48 + n - 52
}
var result = ''
for (var i = 0; i < length; i++) {
let idx = Math.floor(Math.random() * 62)
result += String.fromCharCode(tf(idx))
@craigphicks
craigphicks / README.md
Last active August 16, 2019 22:52
Create a non-singleton class from a singleton - yargs

A singleton makes sense when it prevent multiple access to a resource than must not be accessed in that way. But sometimes a singleton design is used because it is sufficient for expected usage. But that may block expanded usage unecessarily.

ES6 dynamic import can import a singelton module into a closure allowing a singleton to become a non-singleton class. See the file yargs-class.mjs below.

The result of test-yargs0class.mjs -

argv[0]= {
@craigphicks
craigphicks / extending-error.js
Last active August 12, 2019 23:46
How to extend error when prepending a message to an existing error which may or may not be instance of Error
function showDeep(t){
let o=t
do {
console.log(`--- ${o.constructor.name}`)
for (let k of Reflect.ownKeys(o)) {
let d = Reflect.getOwnPropertyDescriptor(o,k)
if (JSON.stringify(d.value)!==undefined) {
console.log(`${k} : ${JSON.stringify(d.value)}`)
if (k==='stack')
console.log("") // funky
@craigphicks
craigphicks / setTimeout-args-bind-scope.md
Created July 10, 2019 21:12
testing javascript setTimeout args, bind, scope.
x=10;
function test(){
  var x=20;
  var obj = {x:30};
  function logargs(t,arg1,arg2,arg3,arg4) { 
    console.log(`(${t}) this.x=${this.x},x=${x},obj.x=${obj.x},${arg1},${arg2},${arg3},${arg4.x}`); 
  }
  logargs("A",this.x,x,obj.x,obj);
 setTimeout(logargs,0,"B",this.x,x,obj.x,obj);
@craigphicks
craigphicks / X11-over-ssh-without-xauth.md
Created July 6, 2019 19:01
Forwarding `X11` over `ssh` without using `xauth`

Forwarding X11 over ssh without using xauth

  • local -- the local machine serving an Xserver.
  • remote -- the remote machine serving the application which drives the data going to the Xserver

Remote /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes
#!/bin/bash
#
#
#<UDF name="ssuser" Label="Sudo user username?" example="username" />
#<UDF name="sspassword" Label="Sudo user password?" example="strongPassword" />
#<UDF name="sspubkey" Label="SSH pubkey (installed for root and sudo user)?" example="ssh-rsa ..." />
# initial needfuls
apt-get -o Acquire::ForceIPv4=true update
@craigphicks
craigphicks / dtdotool.sh
Last active December 27, 2020 08:04
Used in Ubuntu 18.04 to manipulate desktops as atomic elements of an array, e.g., swapping element order, inserting and deleting empty elements.
#!/bin/bash
# Copyright (c) 2019, Craig P Hicks
# content licensed as CC BY-NC-SA
# CC BY-NC-SA details at https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
# This program depends upon 'xdotool' installed as Ubuntu 18.04 managed package
# xdotool project source can be found at:
# https://github.com/jordansissel/xdotool
# https://www.semicomplete.com/projects/xdotool/