- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
395 lines
16 KiB
Plaintext
395 lines
16 KiB
Plaintext
Episode: 2627
|
|
Title: HPR2627: Home Phone Setup!!
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr2627/hpr2627.mp3
|
|
Transcribed: 2025-10-19 06:45:55
|
|
|
|
---
|
|
|
|
This is HPR Episode 2627, titled Phone Phone Setup, exclamation.
|
|
It is hosted by ZIGFLAB and is about 23 minutes long and currently in a clean flag.
|
|
The summary is, this episode we set up a small phone system.
|
|
This episode of HPR is brought to you by archive.org.
|
|
Support universal access to all knowledge by heading over to archive.org, forward slash donate.
|
|
Support universal access to all knowledge by heading over to archive.org.
|
|
Greetings.
|
|
Greetings.
|
|
Nerds.
|
|
This is ZIGFLAB to this level.
|
|
Coming to you on HackerPublic Radio.
|
|
This particular episode I am talking to you through a phone line.
|
|
A phone line that I set up.
|
|
This is our house phone system with Camelio.
|
|
A SIP program.
|
|
A SIP server.
|
|
And then I'll try and pronounce again.
|
|
That is Camelio.
|
|
Not sure how it's pronounced.
|
|
But it's cool.
|
|
Let's start.
|
|
So my neighbor has the Cisco 79940 VoIP telephone.
|
|
We share garage.
|
|
And I snoop around.
|
|
And I sell them.
|
|
I'm like, oh my God, this is awesome.
|
|
Let's make use of them.
|
|
And so they gave me the clear.
|
|
And I got all the telephones.
|
|
And the first thing I did was I connected by a DHCP.
|
|
And on the settings button.
|
|
And toward the options.
|
|
And I thought there's a settings button on the phone.
|
|
And it displayed all the configuration options.
|
|
And so it's like, clearly this is how you set it up.
|
|
I thought, well, you couldn't really edit the options.
|
|
At least most of them.
|
|
So the important ones, you couldn't change.
|
|
So I found the manual.
|
|
And apparently it gets its configuration through tiny FTP.
|
|
That's TFTP.
|
|
So let's set up a TFTP server.
|
|
The only thing I had free is this MACPPC warning devian.
|
|
So I did an app install on TFTP and TFTPD.
|
|
It actually took me a long time to figure out that TFTP is actually an X in its D service.
|
|
X in its D gets its configuration from fc-x in its D dot D.
|
|
Where every file in the structure is quote-unquote ran, so to speak.
|
|
So I open a file in that directory and I call it TFTP.
|
|
The grammar of the config files is actually pretty simple.
|
|
It goes something like this.
|
|
Service name, open brackets, options, close bracket.
|
|
So for the options, I found a nice help file on the internet.
|
|
And you're supposed to populate the options with this.
|
|
Or call equals UDP.
|
|
Port equals 69.
|
|
Now it sounds like I just made up that port, but that's actually the port for tiny HTTP.
|
|
Oh, it's tripping a lot of TP rather.
|
|
Socket type, hologram, weight, yes.
|
|
User, nobody.
|
|
Server, user, slash Sbin, slash in.tftpd.
|
|
Server args, this is the important one.
|
|
Slash, TFTP, B-O-O-T-T-F-D-P boot.
|
|
Disabled, no.
|
|
And per source equals 11.
|
|
And then TCPS equals 102.
|
|
Flags, IPV4.
|
|
All right, all right, all right.
|
|
So notice the server args option.
|
|
This is a directory.
|
|
In that directory, you're supposed to have your...
|
|
That's where you put all your TFTP files.
|
|
So I make sure that.
|
|
And they're...
|
|
Okay, so they're two files.
|
|
When it comes to Cisco, seven, nine, four, zeroes,
|
|
there's one file called CIP defaults.cns.
|
|
And there's another CIP MAC address.
|
|
That's C&F.
|
|
CIP default.
|
|
CIP, I'm sorry, CIP default, let's see.
|
|
And F contains global settings.
|
|
And CIP MAC address.
|
|
C&F contains local settings.
|
|
That's local to the phone.
|
|
So, okay, this is right, awesome.
|
|
I need to test this as a more part of the VoIP provider.
|
|
I looked around and found one called VoIPbuster.
|
|
That was pretty easy.
|
|
The protocol, the VoIP protocol is called CIP.
|
|
Now they're different firmware to Cisco phones to do different things.
|
|
The CIP firmware was already on them.
|
|
You can talk about looking at the upper right of the screen and it says CIP.
|
|
So I didn't have to slash a new firmware.
|
|
Thank God.
|
|
Looking at the manual, I chose my default to be if that is in CIP defaults.cns.
|
|
So I'm going to go ahead and click on that, underscore enable, one.
|
|
Since I see behind a net and as for the IP address and all that jazz,
|
|
the phone will do a DHCP request when it boots up.
|
|
So I found a spare router and had that DHCP running,
|
|
DHCP server running connecting to my phone and my computer to it.
|
|
For the CIP MAC address, C&F file.
|
|
So it's just the hacks of the MAC address.
|
|
My particular CIP MAC address.c&F file.
|
|
For just one connected phone,
|
|
contains Foxy1 address.
|
|
CIP.voIPbuster.com.
|
|
That is the CIP server.
|
|
And then we have a name.
|
|
I call it outside.
|
|
We have awesome name.
|
|
That is my VoIPbuster user.
|
|
Just plain name, outside.
|
|
And then finally password.
|
|
And that is my password.
|
|
All these are the prefix call.
|
|
These is line one underscore.
|
|
Now, I got these settings from VoIPbuster.
|
|
Let's pause on the phones and make some calls.
|
|
So the phone goes through two stages.
|
|
It seems.
|
|
The first stage is getting the DHCP settings and looking for firmware,
|
|
or a file.
|
|
If you can't find one, it resets after getting the DHCP settings.
|
|
This time it completes booting up.
|
|
I picked up a handset.
|
|
Getting ready?
|
|
Behold.
|
|
Not a thing.
|
|
So I looked at the settings by the phone.
|
|
Settings interface.
|
|
Nothing from my config files are found.
|
|
Now, I went to this thinking that TFTP replies to Brawcaster request.
|
|
So the phone is not really needing an address.
|
|
I was wrong.
|
|
It turns out the phone needed the TFTP's IP address.
|
|
So that's a long time.
|
|
I finally found out that you can change the TFTP address in the settings dialog.
|
|
Right on the phone.
|
|
This is one thing you can change in the configuration of the phone.
|
|
First, you need to unlock it.
|
|
This is done by pressing settings and going to the bottom where it says unlock settings.
|
|
Choose that.
|
|
And when you're prompted for a password, the total password is Cisco.
|
|
Who has thought?
|
|
After things are unlocked, go up to the network configuration menu.
|
|
Inside, go to alternate TFTP.
|
|
It should be set to no.
|
|
You want to change that to yes.
|
|
Now you can go up to TFTP server option on enter the address of your TFTP server.
|
|
Okay.
|
|
And so reset it.
|
|
We boot up.
|
|
It looks nice.
|
|
Let's see if we can dial out.
|
|
So I picked up the handset and entered 001.
|
|
Plus, my cell phone number, as Boy Buster told me to do, you press pound to initiate a call.
|
|
So I push pound.
|
|
Two seconds later, I was calling my phone.
|
|
It's bloody work.
|
|
Oh, it's great.
|
|
Now, the caller ID number, you get depends on how you set up your account on Boy Buster.
|
|
I chose my Google Voice number.
|
|
So if you get an incoming call from one of the seven nine four zeroes, you can't get any kind of calls from the seven nine four zero
|
|
about some sort of tunneling.
|
|
Or if you're on a DMZ or something like that.
|
|
I have these phones.
|
|
So let's set up a voice system.
|
|
I have a few of these phones.
|
|
Now, the Mac, EPC computer needs some sort of SIP server running.
|
|
I opted out of using asterisk because of the learning curve.
|
|
I found one called chamomileo.
|
|
Now, chamomileo is in the Open BSD port tree.
|
|
So that's cool.
|
|
This is Debbie and however.
|
|
I apt installed chamomileo.
|
|
It's not bad if you need a database engine type configured in one of the configuration files.
|
|
The files are located in Etsy slash chamomileo.
|
|
I don't really do know how to pronounce that.
|
|
After crepping a bit of the configuration files, I finally set the database type.
|
|
In a file called chamomileo.rc.
|
|
There's a variable there called DB engine.
|
|
I set this to PB text.
|
|
If I didn't want to set up an SQL server or anything like that, text is just fine for me.
|
|
Another setting I changed was SIP domain.
|
|
I changed this to the address of my Mac, EPC computer.
|
|
Now, Etsy slash in a D slash chamomileo.
|
|
Research.
|
|
Research.
|
|
Work just fine.
|
|
That's how I got the server running.
|
|
So I end my computer, my local host.
|
|
And I found that part 5060 is listening.
|
|
So that's the SIP server address.
|
|
Success.
|
|
Now we need to add lines.
|
|
During the chamomileo help, I found that the right command to add lines,
|
|
quote-unquote, are users, as they're known, to chamomileo.
|
|
It is camctl add, user name, and then password.
|
|
So I typed that in.
|
|
It complained about needing an e-mail address.
|
|
And I looked at the documentation.
|
|
I can figure out it's enter the e-mail address.
|
|
So to this day, I don't really know what I needed to do instead.
|
|
I typed it.
|
|
I found a database location to be user slash short shares,
|
|
slash chamomileo, slash dbtext slash chamomileo.
|
|
And I removed the e-mail address string line from the subscribers file.
|
|
And after that, I could add lines willingly with the camcTO.
|
|
I added 1,000 and 1,0001 to test.
|
|
After setting the phone's zip files to the right proxy address,
|
|
in various line 1 variables, I reset the phones,
|
|
cross my fingers, and dialed on the phone.
|
|
And it worked.
|
|
I could dial 1,0001 on the 1,0001 phone and it called.
|
|
It actually rang.
|
|
It was awesome.
|
|
So now I need voicemail.
|
|
I don't need a voicemail for every line,
|
|
just a virtual line that you can call to leave voicemail.
|
|
After googling the shit out of the internet,
|
|
I found a promising project I can get a hub called zippy.
|
|
Now this is meant for Raspberry Pi,
|
|
but I decided to just run it on my Mac PPC computer.
|
|
The address for this is github.com.
|
|
Flashbabbian.hu.
|
|
Flashzip underscorepy to be exact.
|
|
The zippy to the library called pdacip,
|
|
which as per the zippy readme says,
|
|
I did this.
|
|
WGithub.com for pdacip.
|
|
Go into the directory.
|
|
Just do a simple make up.
|
|
Make, make, make, make and go.
|
|
And compile a lot of files without a hitch,
|
|
which makes me sick club very happy when things compile.
|
|
Now to get zippy working,
|
|
the program I'm interested in to Puy repo is a particular program
|
|
called zip serve.
|
|
I typed make and made it right away.
|
|
I ran it and I've got a bloody seg bolt.
|
|
I was so close.
|
|
I added the manager settings,
|
|
that is sd, su, sp,
|
|
ln.
|
|
These correspond to the line credentials they have on your
|
|
camellio line.
|
|
I ran the zip serve again,
|
|
and this time with the file,
|
|
the configuration file specified with config file equals block.
|
|
Next seg bolt.
|
|
Another seg bolt.
|
|
So look at the make file.
|
|
I added the IDB option to cc and the linker stage.
|
|
And then round zip serve in ddb.
|
|
The new debugger that is.
|
|
After crashed, I did a backtrace command to see the path.
|
|
It took to the fault.
|
|
And I found that it was crashing in a line in main,
|
|
where it was doing a string compare in the argument parser.
|
|
I couldn't really figure out why it was crashing.
|
|
So I added the entire parser.
|
|
And hard coded the gink big file manually.
|
|
The location of the config file manually.
|
|
And we did it or not.
|
|
That is a bit of a lot of work.
|
|
I call the line that the zip pi program,
|
|
this zip serve rather.
|
|
Program is connected to.
|
|
It beeps.
|
|
Kind of like a phone ringing.
|
|
Then this German guy got on the line and said hello.
|
|
So I was shaking.
|
|
What the fuck just happened?
|
|
I called him again and got the same guy.
|
|
He didn't see anything different.
|
|
So I searched the zip pi directory for any waves or audio files.
|
|
And some log called and sage.
|
|
That was wab.
|
|
That contained the German guy.
|
|
It wasn't a really poorly person that I called somebody recording.
|
|
So I noticed in the directory when I was searching for this,
|
|
there were a lot of times that wave in mb3 files.
|
|
Those were the messages I left.
|
|
So it works.
|
|
So I probably not what you're supposed to do.
|
|
I changed the end sage that wave file to a nice greeting.
|
|
Okay.
|
|
So got that working.
|
|
That's good.
|
|
One last, well actually two last things.
|
|
But now what I want to do is set up the system in such a way
|
|
that it makes a Facebook message to our house's Facebook message group
|
|
that all my housemates are a part of once a message is left.
|
|
So I found out that after sipserve answer calls,
|
|
it runs a group called mail.sh.
|
|
Excuse me, with $1.2 as a message wave file.
|
|
That's our hook.
|
|
Now, this is about the time when I was searching for a Facebook messenger app
|
|
that worked on the command line for Linux.
|
|
I found a few and none of them worked.
|
|
And one of them was way too complicated.
|
|
So I settled on one called messenger CLI.
|
|
That is gethugs.com, after CB, slash messenger CLI.
|
|
All this is in the show notes, by the way.
|
|
It looks simple as hell.
|
|
It's based on the Facebook chat API, both of which ran in top of node.
|
|
I know node.
|
|
So I clone the repo and went to it and installed text from text.
|
|
And in the end it completed the command line messenger.
|
|
So I ran it.
|
|
That's me for my Facebook credentials.
|
|
It looks promising as hell, but I couldn't actually figure out how to send messages.
|
|
I thought for a second that maybe this is the password dealer.
|
|
My girlfriend message me.
|
|
It popped out in my terminal.
|
|
Yes.
|
|
I still couldn't figure out how to message someone.
|
|
So I tried to hack it.
|
|
Looking at the program's index.js file, I found that it's really a simple wrapper.
|
|
So I decided to look at the readnate for that, which contained a simple node program to log in.
|
|
And echo messages sent to it.
|
|
That program is in the show notes.
|
|
Basically you start with a variable called log in that requires Facebook chat.app.
|
|
It does a log in call with your credentials.
|
|
And it runs ap.
|
|
I don't listen.
|
|
API is a variable that log in populate.
|
|
So you listen for a message.
|
|
And then you send the message.
|
|
The message that gets received has a body to it and a thread ID.
|
|
And I think that's the reason why I couldn't figure it out.
|
|
Because you can't really resolve a person's thread ID from their name.
|
|
So you have to have them text you.
|
|
I message you.
|
|
So I, uh, I just want to blow it up on the one variable, a thread ID.
|
|
I had no idea what that was.
|
|
So I put a console.log into the dump to log out the thread ID.
|
|
Whoever messages me.
|
|
So I went to the house messenger group and I typed Marco.
|
|
And one of my mates replied, was that reply?
|
|
No.
|
|
I'm announced to them.
|
|
The note script logs the thread ID.
|
|
Just a bit of a secret info I needed.
|
|
So I wrote a note script to take a file, written in a configuration file,
|
|
and message the house group with something like the new voicemail at 1109 Fund door.
|
|
Here's our MP3 link.
|
|
Now, 1109 is the house address.
|
|
I need to run this on my OpenBSDBPS.
|
|
Because the MP3 files will be hosted there.
|
|
So I want to log into my server with a script.
|
|
So I set up an SSHT gun pair and I'll label log in about a password or pass phrase.
|
|
That's good.
|
|
The script can do that.
|
|
Then I changed my mail.
|
|
That SSH file to contain.
|
|
I've been SSH in name.
|
|
I'll upload 2.
|
|
You are saying, one is.
|
|
You will find two that the MP3.
|
|
That's just converting the wait version but three.
|
|
Then you are issuing a secure CPC to my OpenBSDBPS.
|
|
Then I send a username to it just to run the program called runner.
|
|
the script on the Open Beasty machine. From there, it runs a script called Runner on the
|
|
server. This is what Runner looks like. Basically it's been plus FH. I go all the arguments
|
|
to said expression, find and change space to underscore. I'll put that to Runner underscore
|
|
to the web root directory and then run node running the 0.0.js dot script.
|
|
Set the spaces out of the file and put it right in the place on the server. Notice the
|
|
script. The option to never ask for a password. That's good. Now let's get to the 0.0.js
|
|
node script. Basically it reads the file. Runner.tmp saves it in the variable. It logs in the
|
|
Facebook cat API. It doesn't listen to anything. It sends a message saying new voice mail at
|
|
11.09. Here's the link. All this does is send out a message with the
|
|
URL of the voice mail. I wanted to put a phone out by the stoop. I didn't want to know
|
|
I don't want to care if it was stolen or damaged. This means I need a separate regular
|
|
online device. It turns out these things are called AIDAS. I found one on Amazon for $30. It's the
|
|
Cisco SPA-112. The manual says that I can connect my browser to the IP to the
|
|
sign to to configure it by a web interface. I tried that and it didn't work. Now it turns out that you need to use the
|
|
alternate ethernet jack on it. There's one jack called ethernet. You connect directly to your
|
|
computer's nix. It's a ethernet port. It gives you a 192.168.16-24 address. From there you connect the 192.168.16.1 and log in as
|
|
admin, password, admin. The configuration web tool is
|
|
dirt simple. You're done. It's working. You can call in from the stoop and leave a
|
|
message for us if you want to. We can call the stoop in case someone's there. The next step is to
|
|
take a snapshot of security camera at the stoop and send it in the Facebook Messenger so you can see who's
|
|
there as well. That's for another day. Thank you for listening. Everyone take care. Bye-bye.
|
|
Music
|
|
Music
|
|
Music
|