# Chapter 1 – Introduction

#

## 1.1 – Documentation Foreword

The intention of this documentation is to get you up & running with InetPowerServer under OS/2 Warp or newer (IPS/2) or Windows 2000 or newer (IPS/32) as quickly as possible, in both simple and advanced configurations. A list of system requirements, step-by-step tutorials for system preparation & configuration, a robust (yet concise) technical reference are provided to quickly get you the concise information you need.

It's my hope that you find this document useful and informative. I welcome your comments, questions and any suggestions you may have on how we can improve it. Thank you for choosing InetPowerServer for your server needs!

## 1.2 – About the Author

I am Terje Flaarønning, the author of the InetPowerServer application. I've been using computers since the early 80s, putting away the games after my first six months or so with a computer at home. Today I work within the IT/Telecom sector in systems design, development and integration. I don't really have any formal IT related education, but I have certified as a Microsoft Certified Systems Engineer (MCSE) to get some prove of knowledge. My MCSE is within the Windows NT 4.0 track but may be upgraded to Windows 2000, XP or 2003 if required at a later time. The MCSE track on Windows NT 4.0 was so simple I lost some of the faith in the Microsoft certification system.

As for programming, I almost always find existing offered applications either too expensive or not powerful enough for my needs, and therefore I tend to write my own. When I ran a BBS in the 80s and early 90s I also wrote my own system for that which in some areas still has technology in it far better than any current packages. Most of my applications are written in the Object Pascal language using the Virtual Pascal or Borland Delphi packages for development. When I started to code my BBS system years ago I decided to drop C(++) style programming because it requires far more time both writing code and debugging it afterwards. Pascal is far superior in that aspect and still doesn't limit the possibilities in the same matter as other languages.

For more information about me personally, please visit my personal web page at http://www.flaaronning.net/.

I would like to thank all people who has made IPS possible, Harald Eilertsen for the C translation of the hook interface, Yvon Letourneau which for some time helped with this documentation, all users and other developers which has written various software related to IPS.

## 1.3 – What is InetPowerServer?

Quite simply put, InetPowerServer (IPS) is a power-packed, feature-rich, secure, scalable and fully customizable Internet server, designed for uni-processor and multi-processor OS/2 Warp and Windows systems. It's built to serve the masses, with seamless operation and flexibility. IPS delivers server services based upon the most current Internet standard technologies, within a scalable framework. IPS maintains peak performance across the board under heavy loads, while delivering rich features for remote monitoring and administration.

IPS provides fully customizable Internet server components for file transfer (FTP), web hosting (HTTP) and mail serving (SMTP and POP3). In addition, IPS's services are RFC compliant, so any connecting client on any platform can experience the features and high performance that IPS has to offer.

IPS also has it's own extensions for remote management and configuration. What's even better is that IPS is entirely customizable and configurable – both remotely or locally. Highlighted features of IPS as a whole and the specific ones for each component are detailed in the following tables:

Feature | Description
--- | ---
Resource pooling | All IPS services are based on resource pooling, which means that IPS always has a pool of already-prepared session resources for client connections to use. This highly increases performance in the acceptance of new connections and in the serving of the clients.
Automatic failure recovery | The IPS server automatically recovers from most possible error situations if something unexpected should happen.
Dynamic configuration | All IPS services offer dynamic configuration for client connection related settings, meaning that you don't need to restart the server if you change the configuration.
Plain text configuration and user database | All IPS configuration is done in plain text configuration files. This allows for easy editing of configuration and user data, as well as the ease of configuring settings for 3rd-party addons.
Site personalities | The Site Personalities feature of IPS allow multiple sites to run on the same machine, and multiple instances of services can be run under each personality. Each "personality" is made up of a unique user database, access control list and virtual tree setup, and services (and multiple instances of those services) can be bound to one or more network interfaces. Site Personalities let the administrator define what runs where (IP/port), who gets access to what (access control lists), where resources are. You fine-tune each site through the Site Personality configuration file. IPS Site Personalities define the environmental conditions that IPS will live in, in which it will adjust to provide seamless, scalable network services for both entry-level and enterprise-class environments.
Multi-homed services | IPS can bind any number of service instances either to the same adapter, or across multiple adapters. The HTTP service naturally supports virtual hosting.
Virtual Directory tree | All object-sharing service components of IPS share a Virtual Directory tree, which you can build from any or all disk resources available on your computer or network. You can "mount" any OS resource to any Virtual Directory you wish.
Virtual Directory roots | Each object-sharing service component can use any directory in the Virtual Directory tree as a root directory for that service. User accounts may even be configured with their own root overriding the default ones.
Remote management | IPS offers remote management and monitoring by providing an open remote administration interface, and a built-in, web-based management interface. (Web-based management is currently limited to monitoring and simple management)
External authentication interface | IPS offers an interface for external password authentication, making it possible to integrate with already-existing user databases. The Windows version can also verify passwords against a NT domain or Active Directory account.
Advanced hook interface | An advanced hook interface is provided through countless of hook points. Installed hooks may be REXX scripts or standardized DLL's and may interact with IPS in many ways..
Fully customizable service responses | All responses given by IPS service components are customizable by the administrator. Powerful system variables and the FiB (Fill in the Blanks) system allows runtime or statistical data from any service component to be dynamically inserted into displayed messages.
RFC compliant service components | All IPS services aim to be fully RFC compliant. Support for the latest RFC additions regarding services are almost always up-to-date in the latest IPS releases.
High-security, high-performance services | All IPS service components are designed for high-security, and have been hand-optimized for high performance.
Multi-platform support | IPS supports multiple platforms: currently OS/2 Warp and Windows variations. Configuration files for one platform are transferable, unchanged, to another. Even the user database can be used by services on both platforms, and can be even used simultaneously by both platforms!
SMP-smart and SMP-slick | IPS provides excellent performance in multi-processor environments by carefully locking internals for writing only allowing multiple processors reading the same structures at the same time.
Technical support | Yes, IPS is free! So is the technical support. Support is offered through a web interface or through mailing list (email). A quick bug reporting template is also provided for easy problem submission (Appendix C).

## 1.4 – The Story Behind

The development which lead to IPS started years ago, when I wanted to run an OS/2-based FTP server at one of my customer's sites. I tried the IBM FTP server included with OS/2, but found that to be causing all kinds of problems for various FTP clients, due to the OS/2-specific directory listings the daemon sent. I searched the Internet for other offerings but found nothing which supported OS/2. So, I started to write my own FTP daemon called "tftpd", Terje's FTPd! Prior to this, I had never written a TCP/IP application. I quickly discovered that the name tftpd was not a good choice, as the TCP/IP community already had something different called Trivial FTP (tftp). The project was renamed to zftpd. The z didn't mean much, but I had to find another name.

I worked on zftpd for some time, and zftp acquired many users around the globe. zftpd supported the FTP standards very well, and most clients worked fine with the daemon. The features of the daemon however, were limited, so after working with zftpd a few years or so, I decided to start a completely new project. This project is known today as InetPowerServer (or IPS for short). IPS was to be developed professionally like any other development project at work, even though it was a private project. That meant lots of specification work on "paper" before coding. I've not been able to keep that going like this all the time because of the heavy development required to make IPS real, and my rather limited spare time.

Today, IPS is like a development baby which I develop new code techniques for, and test them out before using them at work projects. The project continues to support both OS/2 Warp and Windows platforms. If you wonder why the "I" in IPS stands for Inet, not Internet, it's because IPS is meant to be an enterprise-wide solution for both Intranet, Extranet and Internet services. Inet is also used as the protocol family for todays IP based protocols.

This document is the exclusive property of Terje Flaarønning.