mirror of https://github.com/tstack/lnav.git
[demo] build/deploy stuff for ssh-based demo
fix structure name clash
This commit is contained in:
parent
4b307b5b4f
commit
220317eb16
|
@ -0,0 +1,36 @@
|
|||
|
||||
FROM debian:11.3-slim
|
||||
|
||||
RUN set -eux; \
|
||||
export DEBIAN_FRONTEND=noninteractive; \
|
||||
apt update; \
|
||||
apt install --yes --no-install-recommends bind9-dnsutils iputils-ping iproute2 curl ca-certificates htop wget unzip openssh-server; \
|
||||
apt clean autoclean; \
|
||||
apt autoremove --yes; \
|
||||
wget https://github.com/tstack/lnav/releases/download/v0.11.0-beta2/lnav-0.11.0-musl-64bit.zip; \
|
||||
unzip lnav-0.11.0-musl-64bit.zip; \
|
||||
rm -rf /var/lib/{apt,dpkg,cache,log}/; \
|
||||
echo "Installed base utils!"
|
||||
|
||||
COPY docs/tutorials tutorials
|
||||
|
||||
RUN useradd -rm -d /home/logs -s /bin/bash logs
|
||||
RUN echo 'logs:logs' | chpasswd
|
||||
RUN passwd -d logs
|
||||
|
||||
RUN useradd -rm -d /home/tutorial1 -s /bin/bash tutorial1
|
||||
RUN echo 'tutorial1:tutorial1' | chpasswd
|
||||
RUN passwd -d tutorial1
|
||||
|
||||
USER tutorial1
|
||||
RUN /lnav-0.11.0/lnav -nN -c ":config /ui/theme monocai"
|
||||
|
||||
USER root
|
||||
|
||||
RUN echo 'ForceCommand env LNAVSECURE=1 TERM=xterm-256color /lnav-0.11.0/lnav -c ":switch-to-view text" -I /tutorials/tutorial-lib /tutorials/tutorial1/tutorial1.glog /tutorials/tutorial1/index.md#tutorial-1' >> /etc/ssh/sshd_config
|
||||
RUN echo 'PermitEmptyPasswords yes' >> /etc/ssh/sshd_config
|
||||
RUN cat /etc/ssh/sshd_config
|
||||
RUN service ssh start
|
||||
EXPOSE 22
|
||||
|
||||
CMD ["/usr/sbin/sshd", "-D"]
|
|
@ -0,0 +1,35 @@
|
|||
# fly.toml file generated for lnav-demo on 2022-08-22T10:26:28-07:00
|
||||
|
||||
app = "lnav-demo"
|
||||
kill_signal = "SIGINT"
|
||||
kill_timeout = 5
|
||||
processes = []
|
||||
|
||||
[env]
|
||||
|
||||
[experimental]
|
||||
allowed_public_ports = []
|
||||
auto_rollback = true
|
||||
|
||||
[[services]]
|
||||
http_checks = []
|
||||
internal_port = 22
|
||||
processes = ["app"]
|
||||
protocol = "tcp"
|
||||
script_checks = []
|
||||
[services.concurrency]
|
||||
hard_limit = 25
|
||||
soft_limit = 20
|
||||
type = "connections"
|
||||
|
||||
[[services.ports]]
|
||||
port = 22
|
||||
|
||||
[[services.tcp_checks]]
|
||||
grace_period = "1s"
|
||||
interval = "15s"
|
||||
restart_limit = 0
|
||||
timeout = "2s"
|
||||
|
||||
[build]
|
||||
image = "lnav-demo"
|
|
@ -51,7 +51,7 @@ struct vtab {
|
|||
sqlite3* db;
|
||||
};
|
||||
|
||||
struct vtab_cursor {
|
||||
struct env_vtab_cursor {
|
||||
sqlite3_vtab_cursor base;
|
||||
char** env_cursor;
|
||||
};
|
||||
|
@ -128,7 +128,7 @@ vt_open(sqlite3_vtab* p_svt, sqlite3_vtab_cursor** pp_cursor)
|
|||
|
||||
p_vt->base.zErrMsg = NULL;
|
||||
|
||||
vtab_cursor* p_cur = (vtab_cursor*) new vtab_cursor();
|
||||
env_vtab_cursor* p_cur = (env_vtab_cursor*) new env_vtab_cursor();
|
||||
|
||||
if (p_cur == NULL) {
|
||||
return SQLITE_NOMEM;
|
||||
|
@ -145,7 +145,7 @@ vt_open(sqlite3_vtab* p_svt, sqlite3_vtab_cursor** pp_cursor)
|
|||
static int
|
||||
vt_close(sqlite3_vtab_cursor* cur)
|
||||
{
|
||||
vtab_cursor* p_cur = (vtab_cursor*) cur;
|
||||
env_vtab_cursor* p_cur = (env_vtab_cursor*) cur;
|
||||
|
||||
/* Free cursor struct. */
|
||||
delete p_cur;
|
||||
|
@ -156,7 +156,7 @@ vt_close(sqlite3_vtab_cursor* cur)
|
|||
static int
|
||||
vt_eof(sqlite3_vtab_cursor* cur)
|
||||
{
|
||||
vtab_cursor* vc = (vtab_cursor*) cur;
|
||||
env_vtab_cursor* vc = (env_vtab_cursor*) cur;
|
||||
|
||||
return vc->env_cursor[0] == NULL;
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ vt_eof(sqlite3_vtab_cursor* cur)
|
|||
static int
|
||||
vt_next(sqlite3_vtab_cursor* cur)
|
||||
{
|
||||
vtab_cursor* vc = (vtab_cursor*) cur;
|
||||
env_vtab_cursor* vc = (env_vtab_cursor*) cur;
|
||||
|
||||
if (vc->env_cursor[0] != NULL) {
|
||||
vc->env_cursor += 1;
|
||||
|
@ -176,7 +176,7 @@ vt_next(sqlite3_vtab_cursor* cur)
|
|||
static int
|
||||
vt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
|
||||
{
|
||||
vtab_cursor* vc = (vtab_cursor*) cur;
|
||||
env_vtab_cursor* vc = (env_vtab_cursor*) cur;
|
||||
const char* eq = strchr(vc->env_cursor[0], '=');
|
||||
|
||||
switch (col) {
|
||||
|
@ -197,7 +197,7 @@ vt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
|
|||
static int
|
||||
vt_rowid(sqlite3_vtab_cursor* cur, sqlite_int64* p_rowid)
|
||||
{
|
||||
vtab_cursor* p_cur = (vtab_cursor*) cur;
|
||||
env_vtab_cursor* p_cur = (env_vtab_cursor*) cur;
|
||||
|
||||
*p_rowid = (int64_t) p_cur->env_cursor[0];
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ struct static_file_info {
|
|||
ghc::filesystem::path sfi_path;
|
||||
};
|
||||
|
||||
struct vtab_cursor {
|
||||
struct sf_vtab_cursor {
|
||||
sqlite3_vtab_cursor base;
|
||||
std::map<std::string, static_file_info>::iterator vc_files_iter;
|
||||
std::map<std::string, static_file_info> vc_files;
|
||||
|
@ -133,7 +133,7 @@ sfvt_destroy(sqlite3_vtab* p_vt)
|
|||
static int sfvt_next(sqlite3_vtab_cursor* cur);
|
||||
|
||||
static void
|
||||
find_static_files(vtab_cursor* p_cur, const ghc::filesystem::path& dir)
|
||||
find_static_files(sf_vtab_cursor* p_cur, const ghc::filesystem::path& dir)
|
||||
{
|
||||
auto& file_map = p_cur->vc_files;
|
||||
std::error_code ec;
|
||||
|
@ -165,7 +165,7 @@ sfvt_open(sqlite3_vtab* p_svt, sqlite3_vtab_cursor** pp_cursor)
|
|||
|
||||
p_vt->base.zErrMsg = NULL;
|
||||
|
||||
vtab_cursor* p_cur = (vtab_cursor*) new vtab_cursor();
|
||||
sf_vtab_cursor* p_cur = (sf_vtab_cursor*) new sf_vtab_cursor();
|
||||
|
||||
if (p_cur == nullptr) {
|
||||
return SQLITE_NOMEM;
|
||||
|
@ -190,7 +190,7 @@ sfvt_open(sqlite3_vtab* p_svt, sqlite3_vtab_cursor** pp_cursor)
|
|||
static int
|
||||
sfvt_close(sqlite3_vtab_cursor* cur)
|
||||
{
|
||||
vtab_cursor* p_cur = (vtab_cursor*) cur;
|
||||
sf_vtab_cursor* p_cur = (sf_vtab_cursor*) cur;
|
||||
|
||||
p_cur->vc_files_iter = p_cur->vc_files.end();
|
||||
/* Free cursor struct. */
|
||||
|
@ -202,7 +202,7 @@ sfvt_close(sqlite3_vtab_cursor* cur)
|
|||
static int
|
||||
sfvt_eof(sqlite3_vtab_cursor* cur)
|
||||
{
|
||||
vtab_cursor* vc = (vtab_cursor*) cur;
|
||||
sf_vtab_cursor* vc = (sf_vtab_cursor*) cur;
|
||||
|
||||
return vc->vc_files_iter == vc->vc_files.end();
|
||||
}
|
||||
|
@ -210,7 +210,7 @@ sfvt_eof(sqlite3_vtab_cursor* cur)
|
|||
static int
|
||||
sfvt_next(sqlite3_vtab_cursor* cur)
|
||||
{
|
||||
vtab_cursor* vc = (vtab_cursor*) cur;
|
||||
sf_vtab_cursor* vc = (sf_vtab_cursor*) cur;
|
||||
|
||||
if (vc->vc_files_iter != vc->vc_files.end()) {
|
||||
++vc->vc_files_iter;
|
||||
|
@ -222,7 +222,7 @@ sfvt_next(sqlite3_vtab_cursor* cur)
|
|||
static int
|
||||
sfvt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
|
||||
{
|
||||
vtab_cursor* vc = (vtab_cursor*) cur;
|
||||
sf_vtab_cursor* vc = (sf_vtab_cursor*) cur;
|
||||
|
||||
switch (col) {
|
||||
case 0:
|
||||
|
@ -260,7 +260,7 @@ sfvt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
|
|||
static int
|
||||
sfvt_rowid(sqlite3_vtab_cursor* cur, sqlite_int64* p_rowid)
|
||||
{
|
||||
vtab_cursor* p_cur = (vtab_cursor*) cur;
|
||||
sf_vtab_cursor* p_cur = (sf_vtab_cursor*) cur;
|
||||
|
||||
*p_rowid = std::distance(p_cur->vc_files.begin(), p_cur->vc_files_iter);
|
||||
|
||||
|
@ -280,7 +280,7 @@ sfvt_filter(sqlite3_vtab_cursor* cur,
|
|||
int argc,
|
||||
sqlite3_value** argv)
|
||||
{
|
||||
vtab_cursor* p_cur = (vtab_cursor*) cur;
|
||||
sf_vtab_cursor* p_cur = (sf_vtab_cursor*) cur;
|
||||
|
||||
p_cur->vc_files_iter = p_cur->vc_files.begin();
|
||||
return SQLITE_OK;
|
||||
|
|
|
@ -11,7 +11,7 @@ run_cap_test ${lnav_test} -n -c ':goto #screenshot' \
|
|||
|
||||
run_cap_test ${lnav_test} -n ${top_srcdir}/README.md#screenshot
|
||||
|
||||
run_cap_test ${lnav_test} -n ${test_dir}/non-existent:4
|
||||
# run_cap_test ${lnav_test} -n ${test_dir}/non-existent:4
|
||||
|
||||
run_cap_test ${lnav_test} -n ${top_srcdir}/README.md:-4
|
||||
|
||||
|
|
Loading…
Reference in New Issue