# HotspotSaaS - Installation Guide

## Requirements
- PHP 8.0+
- MySQL 5.7+ / MariaDB 10.3+
- Web server: Apache/Nginx
- MikroTik routers with API port 8728 open

---

## Step 1: Upload Files
Upload all files to your web server root (e.g. `/var/www/hotspot_saas/`)

---

## Step 2: Create Database
```sql
mysql -u root -p < database.sql
```
Or import `database.sql` via phpMyAdmin.

---

## Step 3: Configure
Edit `includes/config.php`:
```php
define('DB_HOST', 'localhost');
define('DB_NAME', 'hotspot_saas');
define('DB_USER', 'your_db_user');
define('DB_PASS', 'your_db_password');
```

---

## Step 4: Set Permissions
```bash
chmod 755 system/cache system/logs
chown www-data:www-data system/cache system/logs
```

---

## Step 5: Web Server Config

### Apache (.htaccess in root)
```apache
RewriteEngine On
RewriteRule ^admin$ /admin/index.php [L]
RewriteRule ^user$ /user/index.php [L]
```

### Nginx
```nginx
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
```

---

## Step 6: Setup Cron Job
```bash
crontab -e
# Add this line (runs every 5 minutes):
*/5 * * * * php /var/www/hotspot_saas/cron.php >> /var/log/hotspot_cron.log 2>&1
```

---

## Default Login

### Admin Panel: `/admin/login.php`
- Username: `admin`
- Password: `admin123`
⚠️ **Change immediately after first login!**

### User Panel: `/user/login.php`
- Register with email

---

## How It Works

### ISP User Flow:
1. Register at `/user/login.php`
2. Admin adds balance from Admin → Balance Manager
3. User adds MikroTik router (pays from balance)
4. User creates hotspot plans (map to MikroTik profile)
5. User generates tokens → added to MikroTik automatically
6. User prints voucher cards with QR codes
7. Customers use tokens on hotspot login page
8. Income logged when token first used

### MikroTik Integration:
- Tokens are added as hotspot users via API port 8728
- Login script auto-injected on token generate
- On customer connect: `api/token_used.php` called → records income, sets expiry
- MAC locking: `api/mac_lock.php` called → locks token to device
- Expired tokens removed automatically by cron

---

## File Structure
```
/admin/          → Admin panel pages
/user/           → ISP user panel pages
/api/            → MikroTik callback APIs
/includes/       → Core library (DB, Auth, MikroTik, Helpers)
/system/cache/   → Cache files (must be writable)
/system/logs/    → Log files (must be writable)
cron.php         → Scheduled cleanup job
database.sql     → Database schema
```

---

## Security Checklist
- [ ] Change default admin password
- [ ] Use HTTPS (SSL certificate)
- [ ] Restrict MikroTik API access by IP
- [ ] Keep `includes/config.php` outside web root if possible
- [ ] Set proper file permissions

---

## Login Page Setup

`login.html` এ দুটো জিনিস edit করুন:

```javascript
var PHPNUXBILL_URL = "https://yoursite.com";  // আপনার সাইটের URL
var ROUTER_NAME    = "router1";               // router এর name (DB তে যেটা আছে)
```

Login page MikroTik এ upload করুন:
- Winbox → Files → hotspot → login.html upload করুন

Token connect URL: `https://yoursite.com/api/token_used.php`

Login page এ `doPlanTokenConnect()` function এ URL পরিবর্তন করুন:
```javascript
xhr.open('POST', PHPNUXBILL_URL + '/api/token_used.php', true);
```
