root/websites/partty.org/misc/ttymask.rb @ 8096

Revision 8096, 0.6 kB (checked in by frsyuki, 7 years ago)

websites/partty.org: misc/ttymask.rb

Line 
1#!/usr/bin/env ruby
2
3require 'pty'
4
5mask = []
6File.readlines( File.join(ENV['HOME'], ".ttymask") ).each do |line|
7        mask << line.chomp unless line.empty?
8end
9mask_regexp = /(#{Regexp.union(*mask)})/
10
11trap(15) do
12        `stty echo cooked`
13        exit(1)
14end
15
16begin
17        `stty -echo raw`
18        rio, wio, pid = PTY.spawn(ENV['SHELL'] || "/bin/sh")
19
20        Thread.new do
21                open('typescript', 'w') do |file|
22                        while buf = rio.sysread(1024)
23                                $stdout.syswrite buf.gsub(mask_regexp) {|s| '*'*s.length}
24                                file.syswrite buf
25                        end
26                end
27        end
28
29        while buf = $stdin.sysread(1024)
30                wio.syswrite buf
31        end
32rescue PTY::ChildExited
33        # ignore
34ensure
35        `stty echo cooked`
36end
37
Note: See TracBrowser for help on using the browser.