unified email

This commit is contained in:
Luke Berndt
2026-01-22 21:25:16 -05:00
parent 319d20ea75
commit e4cd8072d9
21 changed files with 32 additions and 162 deletions

View File

@@ -107,7 +107,7 @@
</p> <p><strong>Contact Us</strong></p> <p>
If you have any questions or suggestions about my
Terms and Conditions, do not hesitate to contact me
at luke@robotastic.com.
at support@openmhz.com.
</p> <p>This Terms and Conditions page was generated by <a href="https://app-privacy-policy-generator.nisrulz.com/" target="_blank" rel="noopener noreferrer">App Privacy Policy Generator</a></p>
</body>
</html>

View File

@@ -87,7 +87,7 @@
this page.
</p> <p>This policy is effective as of 2023-09-16</p> <p><strong>Contact Us</strong></p> <p>
If you have any questions or suggestions about my
Privacy Policy, do not hesitate to contact me at luke@robotastic.com.
Privacy Policy, do not hesitate to contact me at support@openmhz.com.
</p> <p>This privacy policy page was created at <a href="https://privacypolicytemplate.net" target="_blank" rel="noopener noreferrer">privacypolicytemplate.net </a>and modified/generated by <a href="https://app-privacy-policy-generator.nisrulz.com/" target="_blank" rel="noopener noreferrer">App Privacy Policy Generator</a></p>
</body>
</html>

View File

@@ -5,10 +5,10 @@ var favicon = require('serve-favicon')
const secrets = require("./secrets");
var cookie_domain = process.env['REACT_APP_COOKIE_DOMAIN'] != null ? process.env['REACT_APP_COOKIE_DOMAIN'] : '.openmhz.com'; //'https://s3.amazonaws.com/robotastic';
var cookie_domain = process.env['REACT_APP_COOKIE_DOMAIN'] != null ? process.env['REACT_APP_COOKIE_DOMAIN'] : '.openmhz.com';
var backend_server = process.env['REACT_APP_BACKEND_SERVER'] != null ? process.env['REACT_APP_BACKEND_SERVER'] : 'https://api.openmhz.com';
var frontend_server = process.env['REACT_APP_FRONTEND_SERVER'] != null ? process.env['REACT_APP_FRONTEND_SERVER'] : 'https://openmhz.com';
var account_server = process.env['REACT_APP_ACCOUNT_SERVER'] != null ? process.env['REACT_APP_ACCOUNT_SERVER'] : 'https://account.openmhz.com'; //'https://s3.amazonaws.com/robotastic';
var account_server = process.env['REACT_APP_ACCOUNT_SERVER'] != null ? process.env['REACT_APP_ACCOUNT_SERVER'] : 'https://account.openmhz.com';
var dev_server = frontend_server + ":3000"
module.exports = function(app) {

View File

@@ -70,136 +70,6 @@ function getCard(req, res, next) {
});
}
/*
exports.get_card = function(req, res) {
var objectId = req.params.id;
try {
var o_id = ObjectID.createFromHexString(objectId);
} catch (err) {
console.warn("Error - /card/:id generating ObjectID " + err);
res.status(500);
res.send(JSON.stringify({
error: err,
"_id": objectId
}));
return;
}
db.get().collection('calls', function(err, transCollection) {
transCollection.findOne({
'_id': o_id
},
function(err, item) {
//console.log(util.inspect(item));
if (item) {
var time = new Date(item.time);
var timeString = time.toLocaleTimeString("en-US");
var dateString = time.toDateString();
res.render('card', {
item: item,
channel: channels[item.talkgroupNum],
time: timeString,
date: dateString
});
} else {
console.warn("Error - /card/:id Could not find Item " + err);
res.send(404, 'Sorry, we cannot find that!');
}
});
});
}
*/
/*
async function getPodcast(req, res, next) {
const now = new Date().toLocaleString();
const feedStart = `
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:psc="http://podlove.org/simple-chapters" xmlns:podcast="https://podcastindex.org/namespace/1.0" version="2.0">
<channel>
<title>
<![CDATA[ OpenMHz ]]>
</title>
<description>
<![CDATA[ Real public safety radio recordings, from across the country. <a href="hhtps://openmhz.com">OpenMHz</a> is a website that makes it easy to share recordings of public safety radio system. This podcast is a collection of interesting events that has been curated by the OpenMHz community. ]]>
</description>
<link>https://openmhz.com</link>
<generator>Podcast for Node</generator>
<lastBuildDate>${now}</lastBuildDate>
<atom:link href="https://openmhz.com/rss.xml" rel="self" type="application/rss+xml"/>
<author>
<![CDATA[ OpenMHz ]]>
</author>
<pubDate>${now}</pubDate>
<copyright>
<![CDATA[ &#169; 2023 Robotastic ]]>
</copyright>
<language>
<![CDATA[ en ]]>
</language>
<ttl>60</ttl>
<itunes:author>OpenMHz</itunes:author>
<itunes:subtitle>I am a sub title</itunes:subtitle>
<itunes:summary>Real public safety radio recordings, from across the country. OpenMHz is a website that makes it easy to share recordings of public safety radio system. This podcast is a collection of interesting events that has been curated by the OpenMHz community.</itunes:summary>
<itunes:owner>
<itunes:name>Luke Berndt</itunes:name>
<itunes:email>luke@robotastic.com</itunes:email>
</itunes:owner>
<itunes:explicit>false</itunes:explicit>
<itunes:category text="Government"/>
<itunes:category text="Daily News"/>
<itunes:category text="True Crime"/>
<itunes:image href="https://openmhz.com/podcast/cover.png"/>
`
const feedEnd = `
</channel>
</rss>
`
let xml = feedStart;
try {
const podcastsCollection = db.get().collection('podcasts');
podcastsCollection.find().toArray(function (err, podcasts) {
for (const podcast of podcasts) {
let description = podcast.description + "\n\nRadio Systems: \n";
for (const system of podcast.systems) {
description = description + " - " + system + "\n";
}
xml = xml + `
<item>
<title>
<![CDATA[ ${podcast.title} ]]>
</title>
<description>
<![CDATA[ ${description} ]]>
</description>
<guid isPermaLink="false">${podcast.downloadUrl}</guid>
<dc:creator>
<![CDATA[ OpenMHz ]]>
</dc:creator>
<url>${podcast.eventUrl}</url>
<pubDate>${podcast.startTime}</pubDate>
<enclosure url="${podcast.downloadUrl}" length="0" type="audio/mp4"/>
<itunes:author>OpenMHz</itunes:author>
<itunes:summary>${description}</itunes:summary>
<itunes:explicit>false</itunes:explicit>
</item>
`
}
xml = xml + feedEnd;
res.set('Content-Type', 'text/xml');
res.send(xml);
});
} catch (err) {
console.error(err);
return;
}
}*/
const dateRange = (start, end) => {
if (start.getYear() != end.getYear()) {
return { "part1": start.toLocaleDateString('en-us', { weekday: "short", year: "numeric", month: "short", day: "numeric" }) + " " + start.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' }), "part2": end.toLocaleDateString('en-us', { weekday: "short", year: "numeric", month: "short", day: "numeric" }) + " " + end.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' }) };
@@ -227,14 +97,14 @@ async function getPodcast(req, res, next) {
siteUrl: 'https://openmhz.com',
imageUrl: 'https://openmhz.com/podcast/cover.png',
author: 'OpenMHz',
copyright: '&#169; 2022 Robotastic',
copyright: '&#169; 2026 Robotastic',
language: 'en',
pubDate: 'May 20, 2012 04:00:00 GMT',
ttl: 60,
itunesAuthor: 'OpenMHz',
itunesSubtitle: 'I am a sub title',
itunesSummary: 'Real public safety radio recordings, from across the country. OpenMHz is a website that makes it easy to share recordings of public safety radio system. This podcast is a collection of interesting events that has been curated by the OpenMHz community.',
itunesOwner: { name: 'Luke Berndt', email: 'luke@robotastic.com' },
itunesOwner: { name: 'Luke Berndt', email: 'support@openmhz.com' },
itunesExplicit: false,
itunesCategory: [{
text: 'Government'

View File

@@ -17,7 +17,7 @@ const AboutComponent = () => {
<Container text>
<Divider horizontal style={{ paddingTop: "4em", paddingBottom: "2em" }}><Header as="h1">About</Header></Divider>
<p>I wrote <a href="https://github.com/robotastic/trunk-recorder">Trunk Recorder</a> because I was curious
<p>I wrote <a href="https://github.com/TrunkRecorder/trunk-recorder">Trunk Recorder</a> because I was curious
about what my local fire station was up to and I put together the original version of OpenMHz because I
figured other people might want to listen to the recordings too.</p>
<p>The latest version of this site makes it easy for other people running Trunk Recorder to share their recordings.
@@ -39,7 +39,7 @@ const AboutComponent = () => {
<ListContent>
<ListHeader as="h2">Where do the different feeds come from</ListHeader>
<ListDescription>
It is a team effort! There are contributors from around country and even internationally, that are running <a href="https://github.com/robotastic/trunk-recorder">Trunk Recorder</a> to capture local radio systems and sending the transmissions to OpenMHz.
It is a team effort! There are contributors from around country and even internationally, that are running <a href="https://github.com/TrunkRecorder/trunk-recorder">Trunk Recorder</a> to capture local radio systems and sending the transmissions to OpenMHz.
</ListDescription>
</ListContent>
</ListItem>
@@ -92,7 +92,7 @@ const AboutComponent = () => {
<ListHeader as="h2">I have other questions</ListHeader>
<ListDescription>
<p>
Check out the <Link to="/terms">Terms of Service</Link>, there might be an answer there or send me an email at <a href="mailto:luke@robotastic.com?Subject=OpenMHz" target="_top">luke@robotastic.com</a>
Check out the <Link to="/terms">Terms of Service</Link>, there might be an answer there or send me an email at <a href="mailto:support@openmhz.com?Subject=OpenMHz" target="_top">support@openmhz.com</a>
</p>
</ListDescription>
</ListContent>

View File

@@ -55,7 +55,7 @@ You agree not to sell, resell, or offer for any commercial purposes, any portion
<Header as='h2'>5. API Access</Header>
The OpenMHz API is designed solely to support the OpenMHz website frontend and iOS app. You may not use the API for any other purpose without explicit permission from OpenMHz. The infrastructure for OpenMHz has not been well designed, and unauthorized use may result in the whole thing crashing. Additionally, some API calls may place a significant load on the server, and preplanning is required to avoid this. We will allow for API access on a case-by-case basis. Please contact us at: luke@robotastic.com
The OpenMHz API is designed solely to support the OpenMHz website frontend and iOS app. You may not use the API for any other purpose without explicit permission from OpenMHz. The infrastructure for OpenMHz has not been well designed, and unauthorized use may result in the whole thing crashing. Additionally, some API calls may place a significant load on the server, and preplanning is required to avoid this. We will allow for API access on a case-by-case basis. Please contact us at: support@openmhz.com
<Header as='h2'>6. Legal Compliance</Header>
@@ -91,7 +91,7 @@ The Services are provided as a labor of love by a single individual. I have a li
<Header as='h2'>14. Contact Me</Header>
If you have any questions or concerns about these Terms, please contact me at luke@robotastic.com.
If you have any questions or concerns about these Terms, please contact me at support@openmhz.com.
By using OpenMHz, you acknowledge that you have read, understood, and agree to be bound by these Terms of Service. Thank you for using our Services!

View File

@@ -159,7 +159,7 @@ function PlaylistBuilder(props) {
<Modal.Description>
<Message icon>
<Icon name='warning sign' />
<Message.Content>The Events feature is a work in progress! Things may break, change, or get deleted. Contact me with ideas or problems: luke@robotastic.com</Message.Content>
<Message.Content>The Events feature is a work in progress! Things may break, change, or get deleted. Contact me with ideas or problems: support@openmhz.com</Message.Content>
</Message>
<Header>Event</Header>
<Form>

View File

@@ -650,7 +650,7 @@ const Main = (props) => {
Join us! Record a local radio system and share it with the world. If you have a spare computer, it is easy to get started. With a $25 SDR or two, you can capture an entire system.
It does take a little bit of work to get things setup, but we are here to help and answer questions.
</p>
<a href="https://github.com/robotastic/trunk-recorder/blob/master/README.md">
<a href="https://github.com/TrunkRecorder/trunk-recorder/blob/master/README.md">
<Button size='large'>
Learn More
</Button>

View File

@@ -64,7 +64,7 @@ function ContactModal(props) {
</List>
</p>
<p>If you have general questions about OpenMHz send me an email, </p>
<p> - Luke <a href="mailto:luke@robotastic.com?Subject=OpenMHz" target="_top">luke@robotastic.com</a> </p>
<p> - Luke <a href="mailto:support@openmhz.com?Subject=OpenMHz" target="_top">support@openmhz.com</a> </p>
</Grid.Column>
<Grid.Column width={10}>