[vim] Add ssl plugin
This commit is contained in:
parent
164b69dc0c
commit
1033d1aa5c
66
.vim/doc/openssl.txt
Normal file
66
.vim/doc/openssl.txt
Normal file
@ -0,0 +1,66 @@
|
||||
This is a mirror of http://www.vim.org/scripts/script.php?script_id=2012
|
||||
|
||||
== Edit OpenSSL encrypted files and turn Vim into a Password Safe! ==
|
||||
|
||||
This plugin enables reading and writing of files encrypted using OpenSSL.
|
||||
The file must have the extension of one of the ciphers used by OpenSSL. For
|
||||
example:
|
||||
|
||||
.des3 .aes .bf .bfa .idea .cast .rc2 .rc4 .rc5
|
||||
|
||||
This will turn off the swap file and .viminfo log. The `openssl` command
|
||||
line tool must be in the path.
|
||||
|
||||
== Install ==
|
||||
|
||||
Put this in your plugin directory and Vim will automatically load it:
|
||||
|
||||
~/.vim/plugin/openssl.vim
|
||||
|
||||
You can start by editing an empty unencrypted file. Give it one of the
|
||||
extensions above. When you write the file you will be asked to give it a new
|
||||
password.
|
||||
|
||||
== Simple Vim Password Safe ==
|
||||
|
||||
If you edit any file named '.auth.bfa' (that's the full name, not just the
|
||||
extension) then this plugin will add folding features and an automatic quit
|
||||
timeout.
|
||||
|
||||
Vim will quit automatically after 5 minutes of no typing activity (unless
|
||||
the file has been changed).
|
||||
|
||||
This plugin will fold on wiki-style headlines in the following format:
|
||||
|
||||
== This is a headline ==
|
||||
|
||||
Any notes under the headline will be inside the fold until the next headline
|
||||
is reached. The SPACE key will toggle a fold open and closed. The q key will
|
||||
quit Vim. Create the following example file named ~/.auth.des3:
|
||||
|
||||
== Colo server ==
|
||||
|
||||
username: maryjane password: esydpm
|
||||
|
||||
== Office server ==
|
||||
|
||||
username: peter password: 4m4z1ng
|
||||
|
||||
Then create this bash alias:
|
||||
|
||||
alias auth='view ~/.auth.des3'
|
||||
|
||||
Now you can view your password safe by typing 'auth'. When Vim starts all
|
||||
the password information will be hidden under the headlines. To view the
|
||||
password information put the cursor on the headline and press SPACE.
|
||||
|
||||
Thanks to Tom Purl for the des3 tip.
|
||||
|
||||
I release all copyright claims. This code is in the public domain.
|
||||
Permission is granted to use, copy modify, distribute, and sell this
|
||||
software for any purpose. I make no guarantee about the suitability of this
|
||||
software for any purpose and I am not liable for any damages resulting from
|
||||
its use. Further, I am under no obligation to maintain or extend this
|
||||
software. It is provided on an 'as is' basis without any expressed or
|
||||
implied warranty.
|
||||
|
201
.vim/plugin/openssl.vim
Normal file
201
.vim/plugin/openssl.vim
Normal file
@ -0,0 +1,201 @@
|
||||
" openssl.vim version 3.2 2008 Noah Spurrier <noah@noah.org>
|
||||
"
|
||||
" == Edit OpenSSL encrypted files and turn Vim into a Password Safe! ==
|
||||
"
|
||||
" This plugin enables reading and writing of files encrypted using OpenSSL.
|
||||
" The file must have the extension of one of the ciphers used by OpenSSL. For
|
||||
" example:
|
||||
"
|
||||
" .des3 .aes .bf .bfa .idea .cast .rc2 .rc4 .rc5 (.bfa is base64 ASCII
|
||||
" encoded blowfish.)
|
||||
"
|
||||
" This will turn off the swap file and the .viminfo log. The `openssl` command
|
||||
" line tool must be in the path.
|
||||
"
|
||||
" == Install ==
|
||||
"
|
||||
" Put this in your plugin directory and Vim will automatically load it:
|
||||
"
|
||||
" ~/.vim/plugin/openssl.vim
|
||||
"
|
||||
" You can start by editing an empty unencrypted file. Give it one of the
|
||||
" extensions above. When you write the file you will be asked to give it a new
|
||||
" password.
|
||||
"
|
||||
" == Simple Vim Password Safe ==
|
||||
"
|
||||
" If you edit any file named '.auth.bfa' (that's the full name, not just the
|
||||
" extension) then this plugin will add folding features and an automatic quit
|
||||
" timeout.
|
||||
"
|
||||
" Vim will quit automatically after 5 minutes of no typing activity (unless
|
||||
" the file has been changed).
|
||||
"
|
||||
" This plugin will fold on wiki-style headlines in the following format:
|
||||
"
|
||||
" == This is a headline ==
|
||||
"
|
||||
" Any notes under the headline will be inside the fold until the next headline
|
||||
" is reached. The SPACE key will toggle a fold open and closed. The q key will
|
||||
" quit Vim. Create the following example file named ~/.auth.bfa:
|
||||
"
|
||||
" == Colo server ==
|
||||
"
|
||||
" username: maryjane password: esydpm
|
||||
"
|
||||
" == Office server ==
|
||||
"
|
||||
" username: peter password: 4m4z1ng
|
||||
"
|
||||
" Then create this bash alias:
|
||||
"
|
||||
" alias auth='view ~/.auth.bfa'
|
||||
"
|
||||
" Now you can view your password safe by typing 'auth'. When Vim starts all
|
||||
" the password information will be hidden under the headlines. To view the
|
||||
" password information put the cursor on the headline and press SPACE. When
|
||||
" you write an encrypted file a backup will automatically be made.
|
||||
"
|
||||
" This plugin can also make a backup of an encrypted file before writing
|
||||
" changes. This helps guard against the situation where you may edit a file
|
||||
" and write changes with the wrong password. You can still go back to the
|
||||
" previous backup version. The backup file will have the same name as the
|
||||
" original file with .bak before the original extension. For example:
|
||||
"
|
||||
" .auth.bfa --> .auth.bak.bfa
|
||||
"
|
||||
" To turn on backups put the following global definition in your .vimrc file:
|
||||
"
|
||||
" let g:openssl_backup = 1
|
||||
"
|
||||
" Thanks to Tom Purl for the original des3 tip.
|
||||
"
|
||||
" I release all copyright claims. This code is in the public domain.
|
||||
" Permission is granted to use, copy modify, distribute, and sell this
|
||||
" software for any purpose. I make no guarantee about the suitability of this
|
||||
" software for any purpose and I am not liable for any damages resulting from
|
||||
" its use. Further, I am under no obligation to maintain or extend this
|
||||
" software. It is provided on an 'as is' basis without any expressed or
|
||||
" implied warranty.
|
||||
"
|
||||
" $Id: openssl.vim 189 2008-01-28 20:44:44Z root $
|
||||
|
||||
augroup openssl_encrypted
|
||||
if exists("openssl_encrypted_loaded")
|
||||
finish
|
||||
endif
|
||||
let openssl_encrypted_loaded = 1
|
||||
autocmd!
|
||||
|
||||
function! s:OpenSSLReadPre()
|
||||
set cmdheight=3
|
||||
set viminfo=
|
||||
set noswapfile
|
||||
set shell=/bin/sh
|
||||
set bin
|
||||
endfunction
|
||||
|
||||
function! s:OpenSSLReadPost()
|
||||
let l:cipher = expand("%:e")
|
||||
if l:cipher == "aes"
|
||||
let l:cipher = "aes-256-cbc"
|
||||
endif
|
||||
if l:cipher == "bfa"
|
||||
let l:cipher = "bf"
|
||||
let l:expr = "0,$!openssl " . l:cipher . " -d -a -salt"
|
||||
else
|
||||
let l:expr = "0,$!openssl " . l:cipher . " -d -salt"
|
||||
endif
|
||||
|
||||
silent! execute l:expr
|
||||
if v:shell_error
|
||||
silent! 0,$y
|
||||
silent! undo
|
||||
echo "COULD NOT DECRYPT USING EXPRESSION: " . expr
|
||||
echo "Note that your version of openssl may not have the given cipher engine built-in"
|
||||
echo "even though the engine may be documented in the openssl man pages."
|
||||
echo "ERROR FROM OPENSSL:"
|
||||
echo @"
|
||||
echo "COULD NOT DECRYPT"
|
||||
return
|
||||
endif
|
||||
set nobin
|
||||
set cmdheight&
|
||||
set shell&
|
||||
execute ":doautocmd BufReadPost ".expand("%:r")
|
||||
redraw!
|
||||
endfunction
|
||||
|
||||
function! s:OpenSSLWritePre()
|
||||
set cmdheight=3
|
||||
set shell=/bin/sh
|
||||
set bin
|
||||
|
||||
if !exists("g:openssl_backup")
|
||||
let g:openssl_backup=0
|
||||
endif
|
||||
if (g:openssl_backup)
|
||||
silent! execute '!cp % %:r.bak.%:e'
|
||||
endif
|
||||
|
||||
let l:cipher = expand("<afile>:e")
|
||||
if l:cipher == "aes"
|
||||
let l:cipher = "aes-256-cbc"
|
||||
endif
|
||||
if l:cipher == "bfa"
|
||||
let l:cipher = "bf"
|
||||
let l:expr = "0,$!openssl " . l:cipher . " -e -a -salt"
|
||||
else
|
||||
let l:expr = "0,$!openssl " . l:cipher . " -e -salt"
|
||||
endif
|
||||
|
||||
silent! execute l:expr
|
||||
if v:shell_error
|
||||
silent! 0,$y
|
||||
silent! undo
|
||||
echo "COULD NOT ENCRYPT USING EXPRESSION: " . expr
|
||||
echo "Note that your version of openssl may not have the given cipher engine built in"
|
||||
echo "even though the engine may be documented in the openssl man pages."
|
||||
echo "ERROR FROM OPENSSL:"
|
||||
echo @"
|
||||
echo "COULD NOT ENCRYPT"
|
||||
return
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:OpenSSLWritePost()
|
||||
silent! undo
|
||||
set nobin
|
||||
set shell&
|
||||
set cmdheight&
|
||||
redraw!
|
||||
endfunction
|
||||
|
||||
autocmd BufReadPre,FileReadPre *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLReadPre()
|
||||
autocmd BufReadPost,FileReadPost *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLReadPost()
|
||||
autocmd BufWritePre,FileWritePre *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLWritePre()
|
||||
autocmd BufWritePost,FileWritePost *.des3,*.des,*.bf,*.bfa,*.aes,*.idea,*.cast,*.rc2,*.rc4,*.rc5,*.desx call s:OpenSSLWritePost()
|
||||
|
||||
" The following implements a simple password safe for any file named
|
||||
" '.auth.bfa'. The file is encrypted with Blowfish and base64 encoded.
|
||||
" Folding is supported for == headlines == style lines.
|
||||
|
||||
function! HeadlineDelimiterExpression(lnum)
|
||||
if a:lnum == 1
|
||||
return ">1"
|
||||
endif
|
||||
return (getline(a:lnum)=~"^\\s*==.*==\\s*$") ? ">1" : "="
|
||||
endfunction
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa set foldexpr=HeadlineDelimiterExpression(v:lnum)
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa set foldlevel=0
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa set foldcolumn=0
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa set foldmethod=expr
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa set foldtext=getline(v:foldstart)
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa nnoremap <silent><space> :exe 'silent! normal! za'.(foldlevel('.')?'':'l')<CR>
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa nnoremap <silent>q :q<CR>
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa highlight Folded ctermbg=red ctermfg=black
|
||||
autocmd BufReadPost,FileReadPost .auth.bfa set updatetime=300000
|
||||
autocmd CursorHold .auth.bfa quit
|
||||
|
||||
augroup END
|
||||
|
Loading…
Reference in New Issue
Block a user