Heroku 와 함께 shadowsocks 무료로 배치하십시오
설명
"버전": "1.0.0"
Github 소스
영어
Shadowsocks -Local 및 Server의 구현은 더 적습니다.
하지만 이번에는 사냥이 가슴 아픈 사냥을 보았습니다. 매우 아름답게 쓰여진 것 같습니다.
Server.js
Local.js
프로토콜 메인 코드-TCprelay
다른
Server.js
코드 1-6
const TCPRelay = require ( './tcprelay' ) . TCPRelay ;
// 协议主内容,后续
const server = require ( 'commander' ) ; // 命令解析
const constants = require ( './constants' ) ; // 版本
const throng = require ( 'throng' ) ;
// 集群化Node.js应用程序的简单工作管理器
const log4js = require ( 'log4js' ) ; // 日志记录
// log4js 包含 node 与 browser, 而这个
// 去掉了浏览器部分,只专注-node
const logger = log4js . getLogger ( 'server' ) ;
// 新建-server-示例 const VERSION = '0.1.8' ;
module . exports . VERSION = VERSION ;코드 8-16
server
. version ( constants . VERSION )
. option ( '-m --method <method>' , 'encryption method, default: aes-256-cfb' )
. option ( '-k --password <password>' , 'password' )
. option ( '-s --server-address <address>' , 'server address' )
. option ( '-p --server-port <port>' , 'server port, default: 8388' )
. option ( '--log-level <level>' , 'log level(debug|info|warn|error|fatal)' , / ^(debug|info|warn|error|fatal)$ / i , 'info' )
. option ( '--log-file <file>' , 'log file' )
. parse ( process . argv ) ; 구성 옵션 -Commander>는 --server-address > server.serverAddress 넣습니다
method > 암호 암호화 방법
password > 비밀번호
serverPort > 서버 포트 "Heroku의 포트 전송-> 80"
serverAddress > 서버 URL "xxx.herokuapp.com"
logLevel > 로그 레벨
logFile > 로그 파일
throng 여러 프로세스를 작동 할 수 있습니다
코드 18-22
throng ( {
workers : process . env . WEB_CONCURRENCY || 1 ,
master : startMaster ,
start : startWorker
} ) ; workers > 프로세스 수
startMaster > 주요 프로세스
function startMaster ( ) {
logger . info ( 'started master' ) ;
}startWorker > 아동 프로세스 function startWorker ( id ) {
logger . info ( `started worker ${ id } ` ) ;
var relay = new TCPRelay ( {
serverAddress : process . env [ 'SERVER_ADDRESS' ] || server . serverAddress || '127.0.0.1' ,
serverPort : process . env [ 'PORT' ] || server . serverPort || 8388 ,
password : process . env [ 'PASSWORD' ] || server . password || 'shadowsocks-over-websocket' ,
method : process . env [ 'METHOD' ] || server . method || 'aes-256-cfb'
} , false ) ;
relay . setLogLevel ( server . logLevel ) ;
relay . setLogFile ( server . logFile ) ;
relay . setServerName ( 'server-' + id ) ;
relay . bootstrap ( ) ;
}TCPRelay > 양말-프로토콜 Local.js
코드 1-15
const TCPRelay = require ( './tcprelay' ) . TCPRelay ;
const local = require ( 'commander' ) ; // 命令解析
const constants = require ( './constants' ) ; // 版本
local
. version ( constants . VERSION )
. option ( '-m --method <method>' , 'encryption method, default: aes-256-cfb' )
. option ( '-k --password <password>' , 'password' )
. option ( '-s --server-address <address>' , 'server address' )
. option ( '-p --server-port <port>' , 'server port, default: 8388' )
. option ( '-b --local-address <address>' , 'local binding address, default: 127.0.0.1' )
. option ( '-l --local-port <port>' , 'local port, default: 1080' )
. option ( '--log-level <level>' , 'log level(debug|info|warn|error|fatal)' , / ^(debug|info|warn|error|fatal)$ / i , 'info' )
. option ( '--log-file <file>' , 'log file' )
. parse ( process . argv ) ; method > 암호 암호화 방법
password > 비밀번호
serverPort > 서버 포트 "Heroku의 포트 전송-> 80"
serverAddress > 서버 URL "xxx.herokuapp.com"
logLevel > 로그 레벨
logFile > 로그 파일
localAddress > 로컬 URL 127.0.0.1
localPort > 로컬 항구
코드 17-27
var relay = new TCPRelay ( {
localAddress : local . localAddress || '127.0.0.1' ,
localPort : local . localPort || 1080 ,
serverAddress : local . serverAddress || '127.0.0.1' ,
serverPort : local . serverPort || 8388 ,
password : local . password || 'shadowsocks-over-websocket' ,
method : local . method || 'aes-256-cfb'
} , true ) ;
relay . setLogLevel ( local . logLevel ) ;
relay . setLogFile ( local . logFile ) ;
relay . bootstrap ( ) ;TCPRelay > 양말-프로토콜 중단 된 멀티 프로세스 시작
log4js 로깅