[Icecast] Edited: <on-connect> / <on-disconnect> not working

Jack Elliott that.jack.elliott at gmail.com
Wed Sep 20 18:11:06 UTC 2023


Hi Jordan, thank you for the suggestion to try msmtp directly as user 
icecast2

First I try as user kpovdjs (me):

kpovdjs at Icecast-Pi:~/bin $ echo "hello there username." | msmtp -a gmailthatjackelliott at kpov.org

This does send the email.

Now su to user icecast2

icecast2 at Icecast-Pi:/home/kpovdjs/bin$ echo "hello there username." | msmtp -a gmailthatjackelliott at kpov.org
msmtp: account gmail not found: no configuration file available

Interesting. For user kpovdjs, msmtp finds account information in 
/home/kpovdjs/.msmtprc

But as user icecast2, there is no .msmtprc file in /home/icecast2

In fact, there is no icecast2 folder in /home

So I create /home/icecast2

I copy my user .msmtprc to /home/icecast2

icecast2 at Icecast-Pi:/home/kpovdjs$ ls -la /home/icecast2
total 12
drwxr-xr-x 2 icecast2 root 4096 Sep 20 10:57 .
drwxr-xr-x 5 root     root 4096 Sep 20 10:51 ..
-rw-r--r-- 1 icecast2 root  332 Sep 20 10:57 .msmtprc

Now I try again:

icecast2 at Icecast-Pi:/home/kpovdjs$ echo "hello there username." | msmtp -a gmailthatjackelliott at kpov.org
msmtp: account gmail not found: no configuration file available

If msmtp cannot find its rc file in /home/icecast2, then maybe there is 
a way to specify the location.

-- 
Jack Elliott
Director of Classical Music Programming
High Desert Community Radio
KPOV Bend, Oregon

On 9/20/23 10:35 AM, Jordan Erickson wrote:
> Hi Jack,
>
> Have you tried, as the icecast2 user, interactively using the msmtp 
> command instead of with your script? Try this, it will narrow down the 
> variables. Also, check to see if your iceast2 user has the required 
> group membership(s), if any, to send mail from that machine.
>
>
> Cheers,
> Jordan Erickson
>
> https://subj.am/
> On 9/20/23 10:32, Jack Elliott wrote:
>>
>> Thank you, Philipp Schafft,
>>
>> Okay my amateur bash script is badly written and I will clean it up.
>>
>> But I don't think my clumsy scripting explains why I can run the 
>> script as user kpovdjs, but not as user icecast2?
>>
>> It uses /usr/bin/msptp and
>>
>> kpovdjs at Icecast-Pi:~/bin $ ls -l /usr/bin/msmtp
>> -rwxr-xr-x 1 root root 83848 Jun 19  2014 /usr/bin/msmtp
>>
>> So that isn't a problem.
>>
>> And the script:
>>
>> kpovdjs at Icecast-Pi:~/bin $ ls -l email_onconnect.sh
>> -rwxrwxrwx 1 kpovdjs kpovdjs 422 Sep 20 10:08 email_onconnect.sh
>>
>> 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.
>>
>> Thomas Zumbrunnen wonders about my mount point definition, this is it:
>>
>>   <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>
>>
>> Thank you, everyone!
>>
>> -- 
>> Jack Elliott
>> Director of Classical Music Programming
>> High Desert Community Radio
>> KPOV Bend, Oregon
>> On 9/20/23 8:44 AM, Philipp Schafft wrote:
>>> Good morning,
>>>
>>> On Wed, 2023-09-20 at 08:24 -0700, Jack Elliott wrote:
>>>> 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
>>>>
>>>> #thatjackelliott at kpov.org
>>>>
>>>> printf "To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\nS
>>>> 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/msmtpthatjackelliott at kpov.org  <
>>>> /home/kpovdjs/bin/on_connect.txt  >/home/kpovdjs/bin/msmtp.log 2>&1
>>> 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).
>>>
>>>
>>>> If I run it as user kpovdjs (me), it sends the email, and this is the
>>>> debug output:
>>>> kpovdjs at Icecast-Pi:~/bin $ ./email_onconnect.sh
>>>> + printf 'To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\
>>>> 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/msmtpthatjackelliott at kpov.org
>>>> But as user icecast2, the debug output is the same, but no email
>>>> sent:
>>>> icecast2 at Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh
>>>> + printf 'To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\
>>>> 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/msmtpthatjackelliott at kpov.org
>>> 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
>>>
>>>
>>>> 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
>>> I hope that is a really really bad joke.
>>>
>>>
>>>> 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.
>>> 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.
>>>
>>>
>>>> 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 at Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh
>>>> + printf 'To:thatjackelliott at kpov.org\nFrom:kpovcomputer at gmail.com\nS
>>>> 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 at kpov.org
>>>> icecast2 at Icecast-Pi:/home/kpovdjs/bin$
>>>>
>>>> Thank you!
>>>>
>>>>> 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 <
>>>>> that.jack.elliott at gmail.com>:
>>>>>> Hi Jordan,
>>>>>>
>>>>>> Here is my script:
>>>>>>
>>>>>> #!/bin/bash
>>>>>>
>>>>>> #thatjackelliott at kpov.org
>>>>>>
>>>>>> printf"To:thatjackelliott at kpov.org\nFrom:kpovcomputer at 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."  >
>>>>>> /home/my_username/bin/on_connect.txt
>>>>>> /usr/bin/msmtpthatjackelliott at kpov.org <
>>>>>> /home/my_username/bin/on_connect.txt
>>>>>>> /home/my_username/bin/msmtp.log 2>&1
>>>>>> 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:
>>>>>>> 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 at 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
>>>>>>> https://subj.am/
>>
>> _______________________________________________
>> Icecast mailing list
>> Icecast at xiph.org
>> http://lists.xiph.org/mailman/listinfo/icecast
>
>
> _______________________________________________
> Icecast mailing list
> Icecast at xiph.org
> http://lists.xiph.org/mailman/listinfo/icecast
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xiph.org/pipermail/icecast/attachments/20230920/84c45c8d/attachment.htm>


More information about the Icecast mailing list