mirror of
				https://github.com/DictXiong/dotfiles.git
				synced 2025-11-04 15:47:49 +08:00 
			
		
		
		
	* riot: bj1 -> proxy * ci: test ask_for_yn * --wip-- [skip ci] * install.sh: will prompt version * zshrc: piv-agent now can re-use agents * zshrc: in docker use theme robbyrussell * update.sh: will send online beacon * beacon: support meta with limited len 64 * bug fix (Sat Jan 21 16:45:35 CST 2023) * well, finally add ssh key for ltp1-bd * set DFS_INITED and do not send login beacon if it was set * rewrite piv-agent to sagent; fmt_note and fmt_into will write to stderr * bug fix (Mon Jan 30 19:41:00 CST 2023) * bug fix (Mon Jan 30 19:46:27 CST 2023) * login beacon add details * $DFS_ORPHAN turns logger off * disable more beacons in CI * install.sh: prepare config earlier * init pbin * install.sh: -H|--hist|--history * install.sh: -H hint * install.sh: -H support multiple keys * fix zsh hist with no new line at the end * remove ^M in hist * bug fix (Wed Feb 1 21:11:41 CST 2023) * bug fix (Wed Feb 1 21:16:29 CST 2023) * bug fix (Wed Feb 1 21:20:21 CST 2023) * ci will send gh.ci.fail * show install opts * DFS_DEBUG to set -x * bug fix: install.sh re-start itself with no args incorrectly * bug fix (Thu Feb 2 18:43:16 CST 2023) * riot: ob->ebd, swap option $1 and $2 and $2 is default to ssh * riot: introduce sshl * logger.sh: support ddns * bug fix (Wed Mar 1 16:37:42 CST 2023) * dfs.ddns.failed -> dfs.ddns.fail * login beacon 2>/dev/null * logger.sh -> frigg-client.sh; curl add time limit 10s * to-install.sh: improve docker-ce * use $DFS_CURL_OPTIONS * ci: add ddns * bug fix (Wed Mar 15 19:37:21 CST 2023) * Revert "bug fix (Wed Mar 15 19:37:21 CST 2023)" This reverts commit 2df87ce1a8893d832e665a0429c7f9e7ae1108eb. * Revert "ci: add ddns" This reverts commit 4fe83215048b05ae3234ce801ac67856d0fea52e. * alias cbd and cbds, riot nasp port to 12022 * .zshrc: sagent -> sagt * fix ci * riot: bug fix when 'tmp' has leading zeros * add ci for cbds --------- Co-authored-by: xiongdian.me <xiongdian.me@bytedance.com>
		
			
				
	
	
		
			102 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# connect to iot services
 | 
						|
THIS_DIR=$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" && pwd )
 | 
						|
source "$THIS_DIR/../tools/common.sh"
 | 
						|
 | 
						|
# get target settings
 | 
						|
# provides:
 | 
						|
SERVER=""
 | 
						|
PORT=""
 | 
						|
SSH_USERNAME=""
 | 
						|
SSH_OPTIONS=""
 | 
						|
get_server_meta()
 | 
						|
{
 | 
						|
    local domain=${1##*.}
 | 
						|
    local host=${1%.*}
 | 
						|
    if [[ "$host" == "$domain" ]]; then
 | 
						|
        domain=""
 | 
						|
    fi
 | 
						|
    case $domain in
 | 
						|
        ibd|ebd )
 | 
						|
            SERVER=$host.$domain.ink
 | 
						|
            PORT=12022
 | 
						|
            SSH_USERNAME=root
 | 
						|
            ;;
 | 
						|
        nasp )
 | 
						|
            SERVER=$host
 | 
						|
            PORT=12022
 | 
						|
            SSH_USERNAME=dictxiong
 | 
						|
            SSH_OPTIONS='-o ProxyJump="ssh@nasp.ob.ac.cn:36022"'
 | 
						|
            ;;
 | 
						|
        "" )
 | 
						|
            SERVER=proxy.beardic.cn
 | 
						|
            local tmp=$(sha256sum <<< "$host" | tr -cd "[:digit:]")
 | 
						|
            tmp=${tmp:0:4}
 | 
						|
            PORT=$((10#$tmp+36000))
 | 
						|
            SSH_USERNAME=root
 | 
						|
            ;;
 | 
						|
        * )
 | 
						|
            fmt_fatal "unknown domain: $domain"
 | 
						|
    esac
 | 
						|
}
 | 
						|
 | 
						|
# ssh
 | 
						|
run_ssh()
 | 
						|
{
 | 
						|
    CMD="ssh -p $PORT $SSH_OPTIONS $SSH_USERNAME@$SERVER"
 | 
						|
    fmt_note "-->" $CMD
 | 
						|
    eval $CMD
 | 
						|
}
 | 
						|
 | 
						|
# sshl
 | 
						|
run_sshl()
 | 
						|
{
 | 
						|
    if [[ -z "$1" || "$1" != *":"* ]]; then
 | 
						|
        fmt_fatal "invalid remote address: $1"
 | 
						|
    fi
 | 
						|
    while
 | 
						|
        local port=$(shuf -n 1 -i 49152-65535)
 | 
						|
        netstat -atun | grep -q "$port"
 | 
						|
    do
 | 
						|
        continue
 | 
						|
    done
 | 
						|
    CMD="ssh -p $PORT $SSH_OPTIONS -NC -L $port:$1 $SSH_USERNAME@$SERVER"
 | 
						|
    fmt_note "-->" $CMD
 | 
						|
    fmt_note "  > please access localhost:$port"
 | 
						|
    eval $CMD
 | 
						|
}
 | 
						|
 | 
						|
# main
 | 
						|
print_help()
 | 
						|
{
 | 
						|
    fmt_info "usage: $0 <service> [command] [options]"
 | 
						|
    echo "available commands: ssh (default), sshl (ssh -L)"
 | 
						|
}
 | 
						|
 | 
						|
router()
 | 
						|
{
 | 
						|
    if [[ -z "$1" || "$1" == "-h" || "$1" == "--help" ]]; then
 | 
						|
        print_help
 | 
						|
        exit
 | 
						|
    fi
 | 
						|
    get_server_meta "$1"
 | 
						|
    case $2 in
 | 
						|
        -h|--help)
 | 
						|
            print_help
 | 
						|
            exit
 | 
						|
            ;;
 | 
						|
        ssh|"" )
 | 
						|
            run_ssh
 | 
						|
            ;;
 | 
						|
        sshl )
 | 
						|
            run_sshl "$3"
 | 
						|
            ;;
 | 
						|
        * )
 | 
						|
            print_help
 | 
						|
            fmt_fatal "unknown command: $2"
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
}
 | 
						|
 | 
						|
router "${GOT_OPTS[@]}"
 |