Documentation

Install ANA on your hosting, activate your license and get your team and your clients working in it.

Introduction

ANA (Advanced Network Assistant) is a web application for IT-services teams. It keeps one record of everything you manage for each client site: domains and hosting, e-mail accounts, other credentials, network devices, ADSL lines, support tickets, scheduled visits and service contracts.

An installation has three parts, each on its own sub-domain:

PartWho uses itExample address
Admin portalYour staffana.your-company.com
Customer PortalYour clientssupport.your-company.com
Public pageAnyone: a landing page that links to both portalswww.your-company.com

The Customer Portal has no database of its own. It shares the admin portal's database, so a reply written by staff appears to the client at once, and the other way round.

Requirements

  • Web server: Apache with mod_rewrite and .htaccess enabled. An ordinary cPanel account is enough.
  • PHP 8 with the mysqli, openssl, mbstring, zip and curl extensions.
  • MySQL or MariaDB: two databases (main and log) and one database user with full rights on both.
  • Cron jobs for backups, reminders and renewal notices.
  • An SMTP mailbox for outgoing mail (password resets, two-factor codes, notifications).
  • A fixed IP address and a domain. The license is tied to both.

Installation

These steps describe a cPanel host. Other hosts work the same way; only the paths differ.

  1. Create the databases. Create a main database and a log database, and a database user with all privileges on both. Import the two supplied .sql files with phpMyAdmin.
  2. Create three sub-domains: one for the admin portal, one for the Customer Portal and one for the public page.
  3. Create a private folder outside public_html, for example /home/USER/ana_private/, with these sub-folders: db_bk (database backups), files_bk (file backups) and files (uploads). Nothing in this folder can be reached from the web.
  4. Place ana_config.php in the private folder and fill in your details:
    define('PRO_DB_NAME',     'main database name');
    define('PRO_Log_DB_NAME', 'log database name');
    define('PRO_DB_USER',     'database user');
    define('PRO_DB_PASS',     'database password');
    The file also holds the SMTP settings and the SECRET_KEY used to encrypt stored credentials.
  5. Upload each application folder to its sub-domain.
  6. Point the admin portal at your paths. In includes/connection.php set the path of ana_config.php, the application folder, the storage folders, and the public addresses of the Customer Portal and the public page.
  7. Point the Customer Portal at the admin portal. In its includes/customer_auth.php set ADMIN_PROJECT_ROOT to the server path of the admin portal.
  8. Set your brand. Edit brand-config.php in the public page and in the Customer Portal: company name, logo and the addresses of the portals.
  9. Install your license as described in the next section.
  10. Add the cron jobs listed under Scheduled jobs.

Keep a copy of SECRET_KEY somewhere safe. Every stored password is encrypted with it. If the key is lost or changed, those passwords and all customer registration links become unreadable.

License activation

Each installation runs under a license file, license.lic. The file is digitally signed and names the domain and the server IP address it was issued for. It works only there, and any edit to the file makes it invalid.

Get your license file

  1. Sign in to your account on this site.
  2. Check that the domain and IP address shown on the license match your server.
  3. Choose Download license file.

Install it

  1. Upload license.lic to the includes/ folder of the admin portal, next to ana_license.php.
  2. Open the admin portal in your browser. If the license matches the server, the sign-in page appears.

What is checked

CheckDetail
SignatureThe file must be exactly as issued.
ExpiryTrial and yearly licenses carry an end date. Lifetime licenses do not.
DomainThe address in the browser must be the licensed domain or one of its sub-domains. www. is ignored.
Server IPThe IP address the web server answers on must be one of the licensed addresses.
Online statusOnce a day the application asks our license server whether the license is still valid. It sends the license key, the domain, the server IP and the application version, and nothing else. If our server cannot be reached, the application keeps working.

Changing domain or server

Write to support@adv-network.app with the new domain and IP address. We re-issue the license, and you download the new file from your account and replace the old one. The old file stops working shortly afterwards.

First sign-in

  1. Sign in to the admin portal as the initial Super Admin and change the password in your profile.
  2. Turn on two-factor authentication in your profile and store the backup codes.
  3. Open Admin Panel, enter your SMTP settings and send a test e-mail.
  4. In the same place, set the server time offset if your host runs on UTC, and the calendar's week start and weekend days.
  5. Run a first database backup to confirm the backup folder is writable.
  6. Add your staff under Users and choose which sites each of them may see.
  7. Fill the Reference List (device categories, currencies, ISPs, operating systems, software, remote tools), then add or import your sites.

Users and permissions

Every staff user has one of five privilege levels:

LevelNameBy default can
1Super AdminDo everything, on all sites
2AdminView, add, edit, delete, disable and print
3ManagerView, add, edit, disable and print (no delete)
4StandardView most pages
5GuestView only, with no statistics and no passwords

Advanced privileges

A Super Admin can override any page for any user: view, add, edit, delete, disable and print are set separately. An override replaces the default in both directions, so it can open a page a user would not normally see, or close one they would.

Site access

Everything belongs to a site. A Super Admin sees all sites. Everyone else sees only the sites assigned to them, on every page and in every report.

Password visibility tiers

Each stored credential has a tier, and each user has one. A user sees a credential only when their tier is at least the credential's tier.

TierMeaningDefault for
3AdminSuper Admin, Admin
2PowerManager
1StandardStandard
0None: sees no passwordsGuest

Sites and contracts

A site is one client. Its page gathers the client's details, contact persons (each with several phones and e-mail addresses), contracts, visits and usage. Sites can be added one by one or imported from CSV.

Contracts

A contract has a start date and an optional end date, the number of regular and emergency visits per month, free remote minutes per month, and the rates for extra hours and extra visits.

Visits and usage

For each month ANA shows the remote time used against the allowance and the visits made against their quotas, and prints a statement. The client's coordinator sees the same figures in the Customer Portal.

Domains, e-mail and accounts

  • Domain Providers: registrars and hosting companies with their login details.
  • Domains: provider, site, renewal date and period, cost and currency, sub-domains, and cPanel and WordPress credentials with WordPress users and roles.
  • E-Mails: mailboxes per domain with their credentials. They can be imported in bulk from CSV, including files saved from Excel.
  • Accounts: a vault for any other service (software subscriptions, portals, licenses), grouped by category, with renewal dates, costs and local users.

Every list can be filtered, exported to CSV and, where it makes sense, imported from CSV.

Network and ADSL

Network / LAN is the device inventory of each site. A device record holds its category, specifications (CPU, operating system, model, serial number), disks, RAM modules, IP and MAC addresses, URLs, Wi-Fi details, connections, licenses, local users, credentials and attached files. A device can be duplicated or moved to another site, and each has a tab listing its tickets.

ADSL covers phone lines and subscriptions (ISP, number, renewal, cost) and routers (model, login and attached files such as configuration backups).

Tickets

Tickets are opened by staff or by clients through the Customer Portal. A ticket page has six tabs:

  • Details: site, device, assignee and status.
  • Messages: the conversation with the client. A message marked internal is a staff-only note the client never sees.
  • Remote: a timer for remote sessions, showing the free remote time left this month.
  • Parts: parts needed for the repair, each moving through requested, priced, approved, purchased, installed, tested.
  • Files: attachments from both sides.
  • History: everything that happened to the ticket.

Status follows the parts

When a ticket has parts, its status is set by the slowest one:

Slowest part isTicket becomes
RequestedIn progress
PricedWaiting for price approval
Approved or purchasedWaiting for part
InstalledIn progress
TestedReady for delivery

A closed ticket is never changed automatically. Staff are alerted on every page to new client tickets and replies, notes from colleagues, tickets assigned to them, new device requests and new feedback.

Visits and tools

  • Schedule: a monthly calendar of regular and emergency site visits, coloured per technician. Drag a visit to move it, hold Ctrl while dropping to copy it, or copy a whole month's pattern into another month.
  • Visit reports: after a visit, record the hardware and software work per device. Once the client's coordinator approves the reports, the visit is locked.
  • To-Do and Reminders: personal lists. Reminders are e-mailed when they fall due.
  • Topics: a knowledge base with formatted text and attachments. A topic marked public is also shown in the Customer Portal.

Reports

Each report can be filtered and printed, and only shows the sites the user may see.

  • Renewals Overview: domains, accounts, ADSL lines and licenses together, grouped by urgency
  • Domain Renewals & Cost
  • Account Renewals & Cost
  • ADSL Renewals & Cost
  • Network Asset Inventory
  • Ticket / Maintenance History

Customer Portal

Clients register through a link that is unique to their site. Create it on the Customers page of the admin portal and send it to the client. A new account must confirm its e-mail address before it can sign in.

A portal user canCustomerCoordinator
Open, follow and reply to their own ticketsYesYes
Read public help topicsYesYes
Register their own deviceYesYes
Give feedbackYesYes
See ticket costs and part pricesNoYes
Manage the site's devices and usersNoYes
Approve part prices and visit reportsNoYes
Review monthly contract usageNoYes

A coordinator is usually the client's office manager. Grant the role on the Customers page. The portal is available in English and Arabic, and customers can protect their account with two-factor authentication.

Device Info Collector

The collector is a small program for Windows and Linux that reads a computer's specifications: CPU, memory, disks, operating system, network addresses and remote-access ID. Staff download it from Tools; customers download it from the portal when registering a device.

  • Paste from Collector on the Add Device form fills in the form for you to review.
  • Update from Collector on an existing device refreshes its specifications and addresses.
  • When a customer registers a device the site does not have yet, it appears as a pending request for staff to review, approve or reject.

Scheduled jobs

Add these four cron jobs. The schedule that matters is chosen inside ANA, so the cron lines never need changing.

ScriptCron scheduleWhat it does
cron_auto_backup.php0 5 * * *Database backup, if one is due today
cron_auto_files_backup.php0 5 * * *Backup of uploaded files, if one is due today
cron_send_reminders.php*/5 * * * *E-mails personal reminders that have fallen due
cron_send_renewal_notifications.php0 7 * * *Sends each user their digest of upcoming renewals

The scripts are in assets/cron_scripts/ of the admin portal. A cron line looks like this:

0 5 * * * php /home/USER/public_html/ana/assets/cron_scripts/cron_auto_backup.php

Backups

In Admin Panel a Super Admin can back up the main database, the log database or both, as .sql, .gz or .zip, and can download, delete or restore a backup, including one uploaded from another machine. Uploaded files are backed up separately as a zip archive.

Automatic backups run daily, weekly or monthly. Super Admins can choose to receive the result by e-mail.

Backups are stored on the same server. Copy them somewhere else regularly, so a failed server does not take the backups with it.

Security

  • Two-factor authentication for staff and customers: authenticator app, e-mailed code, or one-time backup codes.
  • Encrypted credentials: stored passwords are encrypted with AES-256, each with its own random IV.
  • Sessions per device: a user can list their signed-in devices and sign any of them out. Disabling an account takes effect on the next click.
  • Password resets use a link valid for 15 minutes and sign the user out everywhere.
  • Audit log: sign-ins and every create, edit and delete, with user, time and IP address, including actions by customers.
  • Private storage: the configuration file, backups and uploads live outside the web root. Uploaded files are always served as downloads.

We recommend serving all three sub-domains over HTTPS only, and requiring two-factor authentication for every staff account.

License troubleshooting

When the license does not match, the application shows a page with an error code, the domain and the server IP it detected. Compare those with the license in your account.

ErrorMeaningWhat to do
missingNo license file foundUpload license.lic to the includes/ folder
corrupt / signatureThe file was damaged or editedDownload it again and upload it in binary mode, unchanged
expiredThe end date has passedRenew, then install the new file
domainThe site is opened on a domain the license does not coverUse the licensed address, or ask us to re-issue for the new domain
ipThe server's IP address is not in the licenseSend us the IP shown on the error page
reissuedA newer license file existsDownload the current file from your account
suspended / revokedThe license was switched offContact support

On some hosts the web server sits behind a load balancer and answers on a private address such as 10.0.0.5. That private address is the one the license needs. The error page always shows the address to send us.

Support

Write to support@adv-network.app. To help us answer quickly, include your license key, the application version shown at the bottom of the sidebar, and a screenshot of any error.