···11+<?php
22+33+// quick script to work as an endpoint for caddy on demand TLS
44+//
55+// all it does is connect with your application's DB and checks if the domain query matches a username
66+//
77+// if it matches, script returns 200. otherwise, 404
88+99+$query = $_GET['domain'];
1010+1111+$host = getenv('MYSQL_HOST');
1212+$db = getenv('MYSQL_DATABASE');
1313+$user = getenv('MYSQL_USER');
1414+$pass = getenv('MYSQL_PASSWORD');
1515+1616+$conn = mysqli_connect($host, $user, $pass, $db);
1717+1818+$sql = $conn->prepare("SELECT user FROM user WHERE user = ?");
1919+$sql->bind_param('s', $query);
2020+$sql->execute();
2121+2222+$result = $sql->get_result();
2323+2424+if ($final = mysqli_fetch_assoc($result)) {
2525+ $name = $final["user"];
2626+}
2727+else {
2828+ header('HTTP/1.0 404 Not Found');
2929+ die();
3030+}
3131+?>
+35
list.pl
···11+#!/usr/bin/perl
22+#
33+# newline-separated list of values from a mySQL database. used this with dreamwidth code
44+55+use DBI;
66+77+my $Client = HTTP::Tiny->new();
88+99+my $db = "x";
1010+my $host = "x";
1111+my $port = "3306";
1212+1313+my $dsn = "DBI:mysql:database=$db;host=$host;port=$port";
1414+1515+my $username = "x";
1616+my $password = "x";
1717+1818+my %attr = ( PrintError=>0, # turn off error reporting via warn()
1919+ RaiseError=>1 # report error via die()
2020+ );
2121+$dbh = DBI->connect($dsn, $username, $password, \%attr)
2222+ || die "ERROR: $DBI::errstr";
2323+2424+$query = "SELECT user FROM user;";
2525+$sth = $dbh->prepare($query);
2626+$sth->execute();
2727+$data = $sth->fetchall_arrayref();
2828+$sth->finish;
2929+3030+foreach $data ( @$data) {
3131+ ($name) = @$data;
3232+ print "$name\n";
3333+}
3434+3535+$dbh->disconnect();