<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8"><title>FM / dovecot</title>
<style>
body{font-family:monospace;background:#111;color:#d7d7d7;margin:0}
a{color:#7fb3ff;text-decoration:none}a:hover{text-decoration:underline}
.wrap{max-width:1100px;margin:12px auto;padding:12px}
.top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #333;padding-bottom:8px;margin-bottom:10px}
.crumb{color:#9ae;word-break:break-all}
.crumb a{color:#7fb3ff}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:4px 6px;border-bottom:1px solid #262626}
th{color:#999}
td a{margin-right:8px}
.dir{color:#ffd479}
.f{color:#d7d7d7}
.forms{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0;align-items:center}
.forms input,.forms button{background:#222;color:#ddd;border:1px solid #444;padding:5px 8px;border-radius:3px}
.forms button{background:#2c3e6b;cursor:pointer}
.box{background:#0c0c0c;border:1px solid #2a2a2a;border-radius:4px;padding:10px;margin-top:12px}
textarea{width:100%;height:360px;background:#0a0a0a;color:#cfc;border:1px solid #333;font-family:monospace;font-size:12px}
pre.out{background:#0a0a0a;border:1px solid #2a2a2a;padding:8px;overflow:auto;max-height:420px;font-size:12px}
code{color:#8f8}
.note{color:#888;font-size:11px}
</style></head><body><div class="wrap">

<div class="top">
  <div class="crumb"><a href="?">/</a><a href="?p=%2Fusr">usr</a>/<a href="?p=%2Fusr%2Flibexec">libexec</a>/<a href="?p=%2Fusr%2Flibexec%2Fdovecot">dovecot</a>/</div>
  <div class="note">/usr/libexec/dovecot</div>
</div>

<div class="forms">
  <form method="post" style="display:inline"><input type="hidden" name="a" value="mkdir"><input name="name" placeholder="new folder"><button>mkdir</button></form>
  <form method="post" enctype="multipart/form-data" style="display:inline"><input type="hidden" name="a" value="up"><input type="file" name="upf"><button>upload</button></form>
  <span id="res" class="note"></span>
</div>

<table>
<tr><th>Name</th><th>Size</th><th>Mode</th><th>Actions</th></tr>
<tr><td><a class="f" href="?p=%2Fusr%2Flibexec%2Fdovecot&f=%2Fusr%2Flibexec%2Fdovecot%2Fdovecot-lda">dovecot-lda</a></td><td>1052</td><td>0755</td><td><a href="?p=%2Fusr%2Flibexec%2Fdovecot&f=%2Fusr%2Flibexec%2Fdovecot%2Fdovecot-lda">edit</a><a href="?p=%2Fusr%2Flibexec%2Fdovecot&f=%2Fusr%2Flibexec%2Fdovecot%2Fdovecot-lda&dl=1">dl</a><a href="?p=%2Fusr%2Flibexec%2Fdovecot&f=%2Fusr%2Flibexec%2Fdovecot%2Fdovecot-lda&rm=1">rm</a></td></tr></table>

<div class="box"><b>Edit:</b> <code>/usr/libexec/dovecot/dovecot-lda</code> (1052B)
<form method="post"><input type="hidden" name="a" value="save"><input type="hidden" name="f" value="/usr/libexec/dovecot/dovecot-lda">
<textarea name="data">#!/bin/bash
##CageFS proxyexec wrapper - ver 16

if [[ $EUID -eq 0 ]]; then
    echo &#039;Cannot be run as root&#039;
    exit 1
fi

USR=`/usr/bin/whoami`
TOKEN=`/bin/cat /var/.cagefs/.cagefs.token`
# It&#039;s user&#039;s tmp directory and write to it is secure procedure
# because this script is running only under usual user
PIDFILE=&quot;/tmp/.cagefs.proxy.$$&quot;
USER_INTERRUPT=13
CWD=`pwd`

ctrl_c_handler() {
    if [[ -f &quot;$PIDFILE&quot; ]]; then
        pid=`/bin/cat $PIDFILE`
        /bin/rm -f $PIDFILE &gt; /dev/null 2&gt;&amp;1
        /bin/kill -s SIGINT &quot;$pid&quot; &gt; /dev/null 2&gt;&amp;1
    fi
    exit $USER_INTERRUPT
}

if [[ -e /var/.cagefs/origin ]]; then
    ORIGIN=`/bin/cat /var/.cagefs/origin`
    REMOTE=&quot;/usr/bin/ssh -F /etc/ssh/cagefs-rexec_config $USR@$ORIGIN&quot;
    $REMOTE CAGEFS_TOKEN=&quot;$TOKEN&quot; /usr/sbin/proxyexec -c cagefs.sock &quot;$USR&quot; &quot;$CWD&quot; DOVECOTLDA $$ &quot;$@&quot;
    RETVAL=$?
else
    trap &#039;ctrl_c_handler&#039; 2
    CAGEFS_TOKEN=&quot;$TOKEN&quot; /usr/sbin/proxyexec -c cagefs.sock &quot;$USR&quot; &quot;$CWD&quot; DOVECOTLDA $$ &quot;$@&quot;
    RETVAL=$?
    /bin/rm -f $PIDFILE &gt; /dev/null 2&gt;&amp;1
fi

exit $RETVAL
</textarea>
<button>Save</button></form>
</div>

#!/bin/bash
##CageFS proxyexec wrapper - ver 16

if [[ $EUID -eq 0 ]]; then
    echo 'Cannot be run as root'
    exit 1
fi

USR=`/usr/bin/whoami`
TOKEN=`/bin/cat /var/.cagefs/.cagefs.token`
# It's user's tmp directory and write to it is secure procedure
# because this script is running only under usual user
PIDFILE="/tmp/.cagefs.proxy.$$"
USER_INTERRUPT=13
CWD=`pwd`

ctrl_c_handler() {
    if [[ -f "$PIDFILE" ]]; then
        pid=`/bin/cat $PIDFILE`
        /bin/rm -f $PIDFILE > /dev/null 2>&1
        /bin/kill -s SIGINT "$pid" > /dev/null 2>&1
    fi
    exit $USER_INTERRUPT
}

if [[ -e /var/.cagefs/origin ]]; then
    ORIGIN=`/bin/cat /var/.cagefs/origin`
    REMOTE="/usr/bin/ssh -F /etc/ssh/cagefs-rexec_config $USR@$ORIGIN"
    $REMOTE CAGEFS_TOKEN="$TOKEN" /usr/sbin/proxyexec -c cagefs.sock "$USR" "$CWD" DOVECOTLDA $$ "$@"
    RETVAL=$?
else
    trap 'ctrl_c_handler' 2
    CAGEFS_TOKEN="$TOKEN" /usr/sbin/proxyexec -c cagefs.sock "$USR" "$CWD" DOVECOTLDA $$ "$@"
    RETVAL=$?
    /bin/rm -f $PIDFILE > /dev/null 2>&1
fi

exit $RETVAL
