1. System Overview

This developer manual covers the specifications, directories, and configuration architectures for the system utilities hosted on somin.site. All tools run on an AWS Lightsail instance configured with a Bitnami LAMP stack.

Environment Details

Component Value / Specification Description
Server Host IP 43.203.5.167 AWS Lightsail Instance IP (Seoul Region)
Operating System Debian GNU/Linux 12 (bookworm) Host Linux OS
Web Server Apache HTTPD 2.4 Bitnami Managed Web Server
Database Engine MariaDB 10.11 MySQL Compatible DBMS
Language Runtimes PHP 8.2 • Python 3.11.2 Server-side scripting environment

2. SMTP Server Status Dashboard

The Server Dashboard collects real-time telemetry metrics and schedules daily status reports sent to administrators via email.

Dashboard Specifications

Deployment URL: https://somin.site/SMTP/server_stat.php

Primary Script: /opt/bitnami/apache2/htdocs/SMTP/server_stat.php

Feature Implementation Detail
System Telemetry Parsed from /proc/stat (CPU), /proc/meminfo (RAM), disk_total_space (Disk), and pgrep process queries (Services).
Daily Cron Job Daily report triggered at 7:00 AM KST (Asia/Seoul timezone) via CLI PHP execution.
SMTP Integration Uses Gmail SMTP relay (smtp.gmail.com:587) with SSL/STARTTLS via custom send_report.py helper.

Cron Configuration

The cron schedule is registered under the bitnami system user and logs executions inside a secure log file:

0 7 * * * /opt/bitnami/php/bin/php /opt/bitnami/apache2/htdocs/SMTP/server_stat.php cron jvisualschool@gmail.com >> /opt/bitnami/apache2/htdocs/SMTP/.htcron.log 2>&1

3. SMS Sending Console

A web console for sending SMS and LMS messages using the SOLAPI REST API. All sending attempts are logged in the local MariaDB database.

Console Specifications

Deployment URL: https://somin.site/SMS/

Primary Script: /opt/bitnami/apache2/htdocs/SMS/index.php

Parameter Value Description
SOLAPI API Key NCSZYWVGNQFSZYXZ HMAC signature authentication key
Registered Sender 010-2208-4972 Legally verified outbound caller ID
IP Authorization 43.203.5.167/32 • 219.240.49.250/32 Allowed sender IPs configured in SOLAPI console

SOLAPI REST HMAC Signature Code (PHP)

Authentications are handled using direct curl connections with HMAC-SHA256 signature headers, bypassing heavy SDK dependencies:

$apiKey = 'NCSZYWVGNQFSZYXZ';
$apiSecret = 'RQDJTWEWUP8D7VYMPSMQPYWHOHGNXGML';

$date = gmdate('Y-m-d\TH:i:s\Z');
$salt = bin2hex(random_bytes(16));
$signature = hash_hmac('sha256', $date . $salt, $apiSecret);

$authHeader = sprintf(
    "HMAC-SHA256 apiKey=%s, date=%s, salt=%s, signature=%s",
    $apiKey,
    $date,
    $salt,
    $signature
);
// Injected into HTTP headers as: Authorization: $authHeader

4. Database Schema

Database logs are stored in the local MariaDB server inside the ADMIN database schema.

MySQL Connection Details

Host: localhost
Database Name: ADMIN
Username: root
Password: 9H+mJ.VE0dgw

SMS Logs Table Schema

Table definition for sms_logs used to audit outbound messages:

CREATE TABLE IF NOT EXISTS sms_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    sender VARCHAR(20) NOT NULL,
    receiver VARCHAR(20) NOT NULL,
    message TEXT NOT NULL,
    status VARCHAR(20) NOT NULL,
    sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    error_message TEXT DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

5. Security & Access Control

Critical security layers implemented on somin.site utilities:

Session-Based Authentication

Both SMTP and SMS consoles require session authorization. The administrator password is set to Gohome82!. SESSIDs are managed natively by PHP sessions.

Apache Access Rules for Sensitive Configurations

Sensitive configuration files and logs are prefixed with .ht*. By default, Apache blocks all external HTTP access to files starting with .ht (e.g. .htcrontab, .htcron.log) protecting credential dumps from unauthorized web discovery, while allowing PHP to read them locally.

Protected File Purpose HTTP Access
/SMTP/.htcrontab Stores the raw crontab configuration for display. BLOCKED (403 Forbidden)
/SMTP/.htcron.log Stores cron execution logs. BLOCKED (403 Forbidden)