<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Thank you, Philipp Schafft,</p>
    <p>Okay my amateur bash script is badly written and I will clean it
      up. <br>
    </p>
    <p>But I don't think my clumsy scripting explains why I can run the
      script as user kpovdjs, but not as user icecast2?</p>
    <p>It uses /usr/bin/msptp and <br>
    </p>
    <pre>kpovdjs@Icecast-Pi:~/bin $ ls -l /usr/bin/msmtp
-rwxr-xr-x 1 root root 83848 Jun 19  2014 /usr/bin/msmtp</pre>
    <p>So that isn't a problem. <br>
    </p>
    <p>And the script:</p>
    <pre>kpovdjs@Icecast-Pi:~/bin $ ls -l email_onconnect.sh
-rwxrwxrwx 1 kpovdjs kpovdjs 422 Sep 20 10:08 email_onconnect.sh
</pre>
    <p>Yes, I have tried running the script as user kpovdjs and it
      works. And the same command as user icecast2 does not work and
      does not make an error message. <br>
    </p>
    <p>Thomas Zumbrunnen wonders about my mount point definition, this
      is it:</p>
    <pre> <mount type="normal">
        <mount-name>/stream</mount-name>
        <fallback-mount>/fallbacks/Generic_Silence_192kbps_48kHz.mp3</fallback-mount>
        <fallback-override>1</fallback-override>
        <fallback-when-full>1</fallback-when-full>
         <burst-size>65535</burst-size>
        <on-connect>/home/kpovdjs/bin/email_onconnect.sh</on-connect>
        <on-disconnect>/home/kpovdjs/bin/email_ondisconnect.sh</on-disconnect>
        <no-yp>1</no-yp>
    </mount>
</pre>
    <p>Thank you, everyone!<br>
    </p>
    <pre class="moz-signature" cols="72">-- 
Jack Elliott
Director of Classical Music Programming
High Desert Community Radio
KPOV Bend, Oregon</pre>
    <div class="moz-cite-prefix">On 9/20/23 8:44 AM, Philipp Schafft
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:80ffb48ae7ffb2a4922c3e923513a4927d13ca21.camel@de.loewenfelsen.net">
      <pre class="moz-quote-pre" wrap="">Good morning,

On Wed, 2023-09-20 at 08:24 -0700, Jack Elliott wrote:
</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">Hi all,
I am still trying to debug this. Summary, I am using <on-connect> in
my icecast.xml to launch an email when a source-client connects. 
Here is the line in icecast.xml:
<on-connect>/home/kpovdjs/bin/email_onconnect.sh</on-connect>
The problem is that this script doesn't do anything when icecast runs
it. 
The script works if I run it as user kpovdjs (me). But if I su to
user icecast2, it does nothing. 
"email_onconnect.sh" is:
#!/bin/bash
set -x

# <a class="moz-txt-link-abbreviated" href="mailto:thatjackelliott@kpov.org">thatjackelliott@kpov.org</a>

printf "To: <a class="moz-txt-link-abbreviated" href="mailto:thatjackelliott@kpov.org\nFrom">thatjackelliott@kpov.org\nFrom</a>: <a class="moz-txt-link-abbreviated" href="mailto:kpovcomputer@gmail.com\nS">kpovcomputer@gmail.com\nS</a>
ubject: Remote host has connected to mountpoint $1 on the
Backstream\n\n KPOV Icecast server on IcecastPi has detected a
connection on the backstream." > /home/kpovdjs/bin/on_connect.txt
/usr/bin/msmtp <a class="moz-txt-link-abbreviated" href="mailto:thatjackelliott@kpov.org">thatjackelliott@kpov.org</a> <
/home/kpovdjs/bin/on_connect.txt  >/home/kpovdjs/bin/msmtp.log 2>&1
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">

Your printf is wrong here.
NEVER do something like: printf "bla $blubb bla\n";
ALWAYS do: printf "bla %s bla\n" "$blubb";

That is exactly why we use printf in the first place. This is the
reason it exists.

Also you can just pipe your output between the commands. No need for a
tempfile (which also adds many problems, from permissions to race
conditions).


</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">If I run it as user kpovdjs (me), it sends the email, and this is the
debug output: 
kpovdjs@Icecast-Pi:~/bin $ ./email_onconnect.sh
+ printf 'To: <a class="moz-txt-link-abbreviated" href="mailto:thatjackelliott@kpov.org\nFrom">thatjackelliott@kpov.org\nFrom</a>: <a class="moz-txt-link-abbreviated" href="mailto:kpovcomputer@gmail.com\">kpovcomputer@gmail.com\</a>
nSubject: Remote host has connected to mountpoint  on the
Backstream\n\n KPOV Icecast server on IcecastPi has detected a
connection on the backstream.'
+ /usr/bin/msmtp <a class="moz-txt-link-abbreviated" href="mailto:thatjackelliott@kpov.org">thatjackelliott@kpov.org</a>
But as user icecast2, the debug output is the same, but no email
sent:
icecast2@Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh
+ printf 'To: <a class="moz-txt-link-abbreviated" href="mailto:thatjackelliott@kpov.org\nFrom">thatjackelliott@kpov.org\nFrom</a>: <a class="moz-txt-link-abbreviated" href="mailto:kpovcomputer@gmail.com\">kpovcomputer@gmail.com\</a>
nSubject: Remote host has connected to mountpoint  on the
Backstream\n\n KPOV Icecast server on IcecastPi has detected a
connection on the backstream.'
+ /usr/bin/msmtp <a class="moz-txt-link-abbreviated" href="mailto:thatjackelliott@kpov.org">thatjackelliott@kpov.org</a>
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
Are you sure /usr/bin/msmtp works as the Icecast user?
Have you tried to run that script as the same user as Icecast?
e.g.: sudo -u icecast /path/to/script


</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">For debug purposes, I have rwxrwxrwx permission set from / and down
to and including the script.
-rwxrwxrwx  1 kpovdjs  kpovdjs  414 Sep 17 10:59 email_onconnect.sh
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
I hope that is a really really bad joke.


</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">For further debug purposes, I made a copy of the .sh script and
chowned it to user icecast2.
-rwxr-xr-x  1 icecast2 icecast  414 Sep 20 08:08
email_onconnect_usericecast2.sh
It also does not send the email when I invoke it as user icecast2.
The "set -x" debug output is the same. 
At this point it seems that this is not a icecast issue, per se, but
some sneaky subtle weird annoying little Linux thing. However, if
anyone here has an idea on how I might solve it, it would be very
much appreciated.
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
Not the wording I would use.

You could check Icecast's error.log to see if it reports a problem.

Other than that you really first need to establish that the script
actually works running as that user.


</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">Thank you!
===========================

Very cool, I haven't encountered the "set -x" debug flag before.
However, the output isn't as interesting as I hoped:

icecast2@Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh
+ printf '<a class="moz-txt-link-abbreviated" href="mailto:To:thatjackelliott@kpov.org\nFrom:kpovcomputer@gmail.com\nS">To:thatjackelliott@kpov.org\nFrom:kpovcomputer@gmail.com\nS</a>
ubject: Remote host has connected to mountpoint on the Backstream\n\n
KPOV Icecast server on IcecastPi has detected a connection on the
backstream.'
+ /usr/bin/msmtpthatjackelliott@kpov.org
icecast2@Icecast-Pi:/home/kpovdjs/bin$

Thank you!

</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">Hi

For debuging purpose put
set -x in the row after #!/bin/bash
and execute the script. Post the whole output here.

Cheers
Tom
Am 17. Sept. 2023, 19:42 +0200 schrieb Jack Elliott <
<a class="moz-txt-link-abbreviated" href="mailto:that.jack.elliott@gmail.com">that.jack.elliott@gmail.com</a>>:
</pre>
          <blockquote type="cite">
            <pre class="moz-quote-pre" wrap="">Hi Jordan,

Here is my script:

#!/bin/bash

#thatjackelliott@kpov.org

printf <a class="moz-txt-link-rfc2396E" href="mailto:To:thatjackelliott@kpov.org\nFrom:kpovcomputer@gmail.com\nSubject:Remotehosthasconnectedtomountpoint$1ontheBackstream\n\nKPOVIcecastserveronIcecastPihasdetectedaconnectiononthebackstream.">"To:thatjackelliott@kpov.org\nFrom:kpovcomputer@gmail.com\
nSubject: Remote host has connected to mountpoint $1 on the
Backstream\n\n KPOV Icecast server on IcecastPi has detected a
connection on the backstream."</a> >
/home/my_username/bin/on_connect.txt
/usr/bin/msmtpthatjackelliott@kpov.org <
/home/my_username/bin/on_connect.txt
</pre>
            <blockquote type="cite">
              <pre class="moz-quote-pre" wrap="">/home/my_username/bin/msmtp.log 2>&1
</pre>
            </blockquote>
            <pre class="moz-quote-pre" wrap="">
This script has rwx set for everyone (for debugging).

Thank you!

--
Jack Elliott
Director of Classical Music Programming
High Desert Community Radio
KPOV Bend, Oregon
On 9/17/23 8:25 AM, Jordan Erickson wrote:
</pre>
            <blockquote type="cite">
              <pre class="moz-quote-pre" wrap="">Hi Jack,

You said:

---
Okay now that I am user icecast2, let me see if the script I
want the Icecast server to run <on-connect> runs, so . . .
icecast2@icecast-Pi: $ ./email_onconnect.sh

and the prompt returns immediately, no error message, but no
email received. But if I su back to my_username and try the
script, it runs and an email is received.

---

This tells me that your script is not doing what it needs to do
as the Icecast user. Since you're doing it outside of Icecast,
it's not the <on-connect> or <on-disconnect> triggers that are
failing. It would be helpful if you could paste your script
(sensitive info like passwords removed) here.


Cheers,
Jordan
<a class="moz-txt-link-freetext" href="https://subj.am/">https://subj.am/</a>
</pre>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">

</pre>
    </blockquote>
  </body>
</html>