aboutsummaryrefslogtreecommitdiff
path: root/man/man1/osc.1df
diff options
context:
space:
mode:
Diffstat (limited to 'man/man1/osc.1df')
-rw-r--r--man/man1/osc.1df22
1 files changed, 22 insertions, 0 deletions
diff --git a/man/man1/osc.1df b/man/man1/osc.1df
new file mode 100644
index 00000000..9fb61dde
--- /dev/null
+++ b/man/man1/osc.1df
@@ -0,0 +1,22 @@
+.TH OSC 1df "February 2017" "Manual page for osc"
+.SH NAME
+.B osc
+\- netcat-like wrapper for openssl s_client
+.SH SYNOPSIS
+.B osc [HOST [SERVICE]]
+.SH DESCRIPTION
+.B osc
+runs openssl(1ssl)'s s_client subcommand with some options to make it behave a
+bit like netcat(1), quieting errors and even handling STARTTLS if it knows how,
+but still forcing correct verification of certificates and only connecting with
+TLS (not SSL).
+.P
+If rlwrap(1) is available, the client will be run within that to allow line
+editing.
+.P
+It's intended to be run as an interactive tool for cases where you want to
+focus more on debugging the data exchange with the actual server, and not
+debugging the OpenSSL negotiation itself. The author finds it handy for poking
+his STARTTLS SMTP mailserver.
+.SH AUTHOR
+Tom Ryder <tom@sanctum.geek.nz>
{ color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
Ideas
=====

* A wrapper ksw(1df) (kill-switch) that traps SIGINT to kill a called program
  or loop immediately, rather than aborting a loop (is this possible?)
* A wrapper sil(1df) or nec(1df) to turn stty -echo off for the duration of a
  paste?
* I can probably share my psql() completions/shortcuts after sanitizing them a
  bit
* Wouldn't be too hard to add some HTTP BASIC auth to ix(1df) to make pastes
  manageable
* Have eds(1df) accept stdin with the "starting content" for the script
* Convert all the manual pages to mandoc maybe?
  <https://en.wikipedia.org/wiki/Mandoc>
* qmp(1df)--quick man page
* The solution to chn(1df) not running in parallel is probably backgrounded
  processes and mkfifo(1).
* Write something like hcat(1df) or tcat(1df) that includes filename headings
  for each concatenated file.
* I can probably get rid of all that nasty templated shell by writing something
  that wraps around td(1df) and generates shell script to run, and calls that
  via `eval`.
* Ideally, the .awk and/or .sed scripts in the bin and games dirs should be
  syntax-checked or linted. I could at least add some patient application of
  appropriate `gawk --lint` calls for each of the .awk scripts.