30
GitHub - dejavuzhou/felix: SSH and RESTful scaffold for Backend and DevOps engin...
source link: https://github.com/dejavuzhou/felix
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Felix 中文
For Whom
- BackEnd Engineer
- Golang SQL RESTful APIs engineer
- DevOps Engineer
- People Heavily engage with SSH
Do What
- manage massive SSH login configuration
- ssh login speedily
- generate a RESTful app from SQL database with gin-gonic/gin and GORM in GO
- start TCP and SOCK proxy with ssh with speedily
- terminal task list
- Pewdiepie's brofit command to subscribe the Youtube channel
Overview
commands:
$ felix -h Usage: felix [flags] felix [command] Available Commands: brofist Pewdiepie needs your help.Do your part to subscribe Pewdiepie's Youtube Channel. clean purge all felix configuration ginbin Ginbin allows you to embed a directory of static files into your Go binary to be later served from github.com/gin-goin/gin ginbro generate a RESTful codebase from SQL database godoc golang.google.cn/pkg help Help about any command json open a tab in browser to convert json to golang struct scpd scp download file or folder scpu scp upload a file or a folder ssh open a ssh terminal sshad add a ssh connection configuration sshdu duplicate a ssh connection sshedit update a ssh connection sshexport export all ssh connection configuration to a csv file sshimport import massive ssh connection configuration from a csv file sshinfo view a ssh connection sshls list all ssh connection configuration or search by hostname sshproxy ssh port proxy sshrm delete a ssh connection sshsocks start a socks4/5 proxy sshw open a web UI for Felix http://localhost:2222 task list all rows in TaskList taskad add a row into TaskList taskok set a row done in TaskList taskrm remove a row in TaskList Flags: -h, --help help for felix --verbose verbose -V, --version show binary build information Use "felix [command] --help" for more information about a command.
Build and Run
go get github.com/dejavuzhou/felix
go install
- append $GOBIN into your env $PATH
felix -h
or just go build
run binary by ./felix
ScreenShot
command: felix sshw
$ felix sshw -h the demo website is http://home.mojotv.cn:2222 Usage: felix sshw [flags] Flags: -a, --addr string listening addr (default ":2222") -x, --expire uint token expire in * minute (default 1440) -h, --help help for sshw -p, --password string auth password (default "admin") -s, --secret string jwt secret string -u, --user string auth user (default "admin") Global Flags: --verbose verbose
$ felix sshw use random string as jwt secret: @Ubr)Vrp~Zoo6Rvrk1PP1*ZXPYby_Z)s login user: admin login password: admin login expire in 1440 minutes [GIN-debug] [WARNING] Now Gin requires Go 1.6 or later and Go 1.7 will be required soon. [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "_release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] POST /api/login --> github.com/dejavuzhou/felix/ssh2ws/controllers.GetLoginHandler.func1 (4 handlers) [GIN-debug] GET /api/ws/:id --> github.com/dejavuzhou/felix/ssh2ws/controllers.WsSsh (5 handlers) [GIN-debug] GET /api/ssh --> github.com/dejavuzhou/felix/ssh2ws/controllers.SshAll (5 handlers) [GIN-debug] POST /api/ssh --> github.com/dejavuzhou/felix/ssh2ws/controllers.SshCreate (5 handlers) [GIN-debug] GET /api/ssh/:id --> github.com/dejavuzhou/felix/ssh2ws/controllers.SshOne (5 handlers) [GIN-debug] PATCH /api/ssh/:id --> github.com/dejavuzhou/felix/ssh2ws/controllers.SshUpdate (5 handlers) [GIN-debug] DELETE /api/ssh/:id --> github.com/dejavuzhou/felix/ssh2ws/controllers.SshDelete (5 handlers) [GIN-debug] GET /api/sftp/:id --> github.com/dejavuzhou/felix/ssh2ws/controllers.SftpLs (5 handlers) [GIN-debug] GET /api/sftp/:id/dl --> github.com/dejavuzhou/felix/ssh2ws/controllers.SftpDl (5 handlers) [GIN-debug] GET /api/sftp/:id/cat --> github.com/dejavuzhou/felix/ssh2ws/controllers.SftpCat (5 handlers) [GIN-debug] GET /api/sftp/:id/rm --> github.com/dejavuzhou/felix/ssh2ws/controllers.SftpRm (5 handlers) [GIN-debug] GET /api/sftp/:id/rename --> github.com/dejavuzhou/felix/ssh2ws/controllers.SftpRename (5 handlers) [GIN-debug] GET /api/sftp/:id/mkdir --> github.com/dejavuzhou/felix/ssh2ws/controllers.SftpMkdir (5 handlers) [GIN-debug] POST /api/sftp/:id/up --> github.com/dejavuzhou/felix/ssh2ws/controllers.SftpUp (5 handlers) [GIN-debug] Listening and serving HTTP on :2222
command: felix ginbro
ginbro doc
felix ginbro
command is migrated from dejavuzhou/ginbro.
Generated WordPress MySQL database running demo
$ felix ginbro Error: required flag(s) "appDir", "dbAddr" not set Usage: felix ginbro [flags] Examples: felix rest -u root -p password -a "127.0.0.1:3306" -d dbname -c utf8 --authTable=users --authColumn=pw_column -o=FelixRestOut" Flags: -o, --appDir string app's code output directory -l, --appListen string app's listening addr (default "127.0.0.1:5555") --authColumn string bcrypt password column (default "password") --authTable string login user table (default "users") -a, --dbAddr string database connection addr (default "127.0.0.1:3306") -c, --dbCharset string database charset (default "utf8") -n, --dbName string database name -p, --dbPassword string database user password (default "password") -t, --dbType string database type: mysql/postgres/mssql/sqlite (default "mysql") -u, --dbUser string database username (default "root") -h, --help help for ginbro Global Flags: --verbose verbose required flag(s) "appDir", "dbAddr" not set
the output code base
command: felix sshls
command: felix ssh 3
command: felix ssh 2
command: felix sshsocks 34 -l 1080
command: felix taskad
Code Logic
- save SSH configurations into a SQLite.db in
$HOME/.felix.db
- use spf13/cobra as command framework
felix ginbro
Logic
- use SQL query get all tables and column schema from database
- transform SQL type into Golang type and Swagger Doc type
- use Golang Std Lib(text/template) to output Gin's handler and Route files and GORM model files
os.exec
callgo fmt
to format the output codebase
felix sshls
Logic
- use GORM retrieve all SSH configuration from SQLite.db
- use olekukonko/tablewriter write table into terminal
felix ssh 9
Logic
- get a ssh configuration by ID
- use golang.org/x/crypto/ssh package start ssh session
- customize
stdin
andstdout
to listen Sudo command for password message then input sudo password automatically
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK