iProject System Administrator's Guide

Table of Contents

  1. System Overview
  2. Security Overview
  3. System Requirements
    1. Client Requirements
    2. Server Requirements
    3. Optional
  4. Installation Considerations
    1. Physical Configuration Considerations
    2. Browser File Display Considerations
    3. Firewall Considerations
  5. Installing the Software
    1. Prepare for the Installation
    2. Run the Installation Program
    3. Install the License
    4. Configure the Operating System
    5. Configure the iProject Services
    6. Optional Configuration Steps
      1. Configure the Data Root Directory
      2. Configure the Browser File Display Directory
      3. Configure the Bug Reporting Page
      4. Configure the Connection Settings
      5. Customize the Web Pages
  6. Client-Side Setup
  7. Running the iProject
    1. Starting the System
    2. Automatically Starting the iProject Server
    3. Restarting the System Services
    4. Stopping the System Services
    5. Testing the Installation
  8. Maintenance
    1. Routine Maintenance Tasks
    2. Monitoring Server Status
    3. Managing iProject Services
  9. iProject Administrative Tasks
    1. Creating and Editing Companies
    2. Creating and Editing Users
    3. Assigning Company Roles
  10. Fine-Grained Access Control
  11. Advanced Topics
    1. INI File Overview
    2. Customizing Service Configuration
    3. Automatic Server Restart
    4. File System Mapping
    5. Customizing Client Resources
    6. Support for Multiple Languages
  12. Troubleshooting
    1. Server Problems
    2. Cross-Checking Logs
    3. Obtaining Support From iReservoir.com
  13. Known Issues
    1. Known Server Issues
    2. Known Client Issues
  14. Dealing with Digital Certificates
  15. PostgreSQL Basics
  16. Default Role Permissions
  17. Sample Scripts

List of Figures

   Figure 1    iProject system operation
Figure 2 The Database Configuration panel
Figure 3 System Status display
Figure 4 Console Output display
Figure 5 Service Status display
Figure 6 Database management interface
Figure 7 Storage management interface
Figure 8 Log management interface
Figure 9 Permission management interface
Figure 10 New Company introduction screen
Figure 11 New Company information screen
Figure 12 New Company administrator screen
Figure 13 New Company review screen
Figure 14 Edit Companies screen
Figure 15 Edit Users screen
Figure 16 New User screen
Figure 17 Company Staff Roles screen
Figure 18 Example permission assignments
Figure 19 Example permission status
Figure 20 iProject object hierarchy

System Overview

The iProject provides a secure, easy-to-use collaborative data workspace.

The iProject is a three-tier client/server application: The client handles display functions, while the server handles security, application logic, and data manipulation. The server interacts with a storage layer consisting of a file server and database. Figure 1 gives a block diagram iProject system operation.

The client runs as an application installed on the user's computer, communicating with the server by sending requests over SSL sockets.

The server runs as a stand-alone Java application, accepting connections from the client, processing the requests, and returning results. Data files are stored using the native filesystem of the server's machine. Other data (e.g. company and user information) are stored in a relational database via JDBC. For convenience, the iProject can be configured to make common file types viewable to users by double-clicking. This is accomplished by setting up a special Display Directory into which the server temporarily copies requested files, so that they can be shown in the client's browser. See Browser File Display Considerations and Configure the Browser File Display Directory.


Figure 1: iProject system operation

Back Top Chapter Table of Contents

Security Overview

System security is an enormous topic and an ongoing task, well beyond the scope of this guide. Briefly, there are five main security tasks related to the iProject.

Back Top Chapter Table of Contents

System Requirements

Client Requirements

Server Requirements

Optional

Back Top Chapter Table of Contents

Installation Considerations

Physical Configuration Considerations

The components of the iProject do not have to be installed on the same physical machine, as long as they can communicate as described in Figure 1:

It is possible to have multiple iProject servers running in front of the same filesystem and database. This provides scalability by allowing several iProject servers to share the overhead of request processing and security enforcement, which is a heavier burden than that placed on the filesystem or database. This type of configuration will typically include a load-balancing router in front of the iProject servers.

Browser File Display Considerations

Certain types of files are appropriately displayed in a Web browser. These include GIF, JPG, and other image file formats, MPEG animations, and Adobe Acrobat PDF documents. Most browsers can be configured to display specific file types using a specific viewer, and many are preconfigured to display Microsoft Office documents.

These viewing capabilities enhance productivity. The iProject provides viewers for specific technical data types such as LAS. Even in a technical area, however, simple documents, spreadsheets, and the like are common, and it is clearly undesirable to provide internal viewers for every possible file type. Displaying common types using a client's browser allows users to easily view files without having to download and open them in a different application.

This feature can easily be disabled. If enabled, the price of this convenience is a certain security risk, which can fortunately be controlled.

Firewall Considerations

The iProject server has very specific communication requirements, which should be easy to accommodate on the host's firewall and/or proxy.

The more interesting (and almost infinitely varied) problem is that of allowing the iProject client to communicate to the iProject server through the client's firewall. The requirements are complementary to those of the host firewall.

Various companies have various firewall and proxy configurations and procedures. The easiest thing is to do is assign port 443 to the iProject server, since this port is almost always allowed on firewalls and the iProject uses HTTPS tunneling, which should be permitted by most proxies. This is only an issue if the iProject server resides on the same machine as the Web server. In that case, HTTPS (which uses port 443) cannot be used to view exposed files. There are several options:

Back Top Chapter Table of Contents

Installing the Software

There are several steps involved in installing the iProject system:

Prepare for the Installation

Obtain a Secure Socket Layer (SSL) Certificate

The iProject communicates using SSL sockets to ensure data confidentiality and integrity. This requires an SSL certificate from a certifying authority (such as Entrust or Verisign). The iProject requires that this certificate be in PKCS12 or JKS format. Obtaining certificates usually takes a few weeks. See Dealing with Digital Certificates for further information.

Install Supporting Software

Three supporting programs should be installed and configured before installing the iProject:

Run the Installation Program

The iProject Installation program installs the iProject system components:

It also sets most configuration values, though there are a few (described below) that will need to be set the first time you start the iProject server.

On Windows machines, attach the USB dongle provided with your installation package before running the installation. Some versions of Windows will attempt to locate drivers right away. You may cancel any such effort, as the iProject installation will install the required dongle drivers.

Install the License

The iProject server requires that a special license file, IrLicense.jar, be present in the bin subdirectory where the iProject is installed (this directory will also contain the file ircserver.jar). The license file is provided with your installation package. Copy it into the bin subdirectory.

Configure the Operating System

You should create an account under which to run the iProject server. This account will need these permissions:

On Linux, there are two system settings related to shared memory that may boost performance: shmall and shmmax. Depending on your system, these may be accessible through /etc/sysctl.conf or /proc/sys/kernel. These usually have fairly small default values (2,097,152 (2Mb) and 33,554,432 (32Mb) respectively), and we've found that increasing them to 134,217,728 (128Mb) is helpful.
In /etc/sysctl.conf, add or change the lines:

kernel.shmall = 134217728
kernel.shmmax = 134217728
In /proc/sys/kernel you can check the values with
cat /proc/sys/kernel/shmall
cat /proc/sys/kernel/shmmax
and set them with
echo 134217728 > /proc/sys/kernel/shmall
echo 134217728 > /proc/sys/kernel/shmmax

Configure the iProject Services

The iProject server has several configuration values that influence its operation. Most of these are set to sensible values during installation.


Figure 2: The Database Configuration panel

Start the iProject server by running the launch script generated by the installation program (iproject_server_launch.sh or iproject_server_launch.bat). In the Configuration group, check the values:

Press the Start button, and check the Console Output item on the Status group for any error messages. The configuration values will be saved and automatically entered the next time the iProject server is started.

Optional Configuration Steps

There are several additional ways to customize the iProject. These are usually not required, but can be used to tune your iProject installation.

Configure the Data Root Directory

The iProject needs read/write/delete permissions on one directory, under which it will build a directory tree to store data files for projects in the iProject. The iProject accesses this directory using native filesystem calls on its host machine, so this directory must look local (i.e. have a path in the local filesystem). It does not actually need to reside on the iProject server. Under Linux/Unix systems, for example, an NFS mount can be used. Note that for network mounted storage, network performance will usually have an impact on overall performance.

When the directory has been identified (and appropriately connected if necessary), the iProject must be set to use it. Normally this will be set by the installation program, but can be set manually or changed later. On the Database item in the Service Management group, execute the query:

UPDATE Zoo SET anml_value='whatever directory' WHERE anml_name='Elephant'
Note that changing this value will not affect any projects created before the change.

Configure the Browser File Display Directory

As described under Browser File Display Considerations, it can be convenient to allow the iProject to display certain file types using the client's browser. If this feature is desired, then the iProject server must have write/delete permissions on a directory (usually /temp) in the Web server's document hierarchy. If the Web server does not reside on the same machine as the iProject server, then some kind of mounting of this directory (such as NFS) will be needed.

When the directory has been identified (and appropriately connected if necessary), the iProject must be set to use it. Normally this will be set by the installation program, unless the Web server does not reside on the same machine as the iProject server. On the Database item in the Service Management group, execute the query:

UPDATE Zoo SET anml_value='local path to the display directory' WHERE anml_name='Peacock'

If the Web server runs on a different host than the iProject server, it must be set with

UPDATE Zoo SET anml_value='Web host address' WHERE anml_name='Peahen'

Finally, if a Web directory other than /temp is used, it must be set with

UPDATE Zoo SET anml_value='Web directory' WHERE anml_name='Peachick'

Configure the Bug Reporting Page

The iProject is preconfigured to direct bug reports to the iReservoir.com issue tracking server, which will usually be appropriate. Bug reports may be entered using any URL, by setting the URL in the iProject. On the Database item in the Service Management group, execute the query:

UPDATE Zoo SET anml_value='desired url' WHERE anml_name='Dog'

Configure the Connection Settings

The Javascript file /scripts/connection_info.js under the Web root directory can be used to specify the address and port(s) clients will use to connect to the iProject server. By default, clients will attempt to connect to the same address as the Web server, on ports 443 2000 20 2001 in that order. Clients read this file for connection information.

You should change this if you set a different port list in Server Ports in the Socket configuration, or if the iProject server is on a different machine than the Web server. If you are load-balancing several iProject servers, then the host address should be that of the load-balancer.

Customize the Web Pages

The iProject installation includes some default Web pages. Please customize these pages to suit your own needs and preferences. The content of any pages installed with the iProject is considered part of the system, so it can be freely copied and adapted to suit your needs.

Back Top Chapter Table of Contents

Client-Side Setup

The only setup required for the iProject client is to download and run the installation program. This only needs to be done once; thereafter the client will update itself automatically for the most part. Very occasionally, a patch may be required for an update that cannot be applied automatically; such patches will also be provided as downloadable executable programs.
Back Top Chapter Table of Contents

Running the iProject

Starting the System

Automatically Starting the iProject Server

Adding the startup option to the final line of any of the startup scripts will cause it to launch and immediately start the iProject services. This can be used to have the iProject start at reboot, but note that the database needs to be running first. Also, all passwords must be stored in the Configuration (see Customizing Service Configuration).

Restarting the System Services

If necessary, the iProject server can be restarted without actually shutting it all the way down. Press the Restart Services button. Any users who are logged in will not be logged out, but any data transfers in progress will be interrupted.

Stopping the System Services

Press the Shutdown Services button.

Testing the Installation

When the installation and configuration are complete, the general functioning of the system should be tested.
  1. Start the server
    (General validation of the server installation and configuration.)

    If the server shuts down,
    Check your license
    • Is it installed and accessible to the user running the iProject server?
    • Is the filename capitalized correctly (for Linux/Unix servers)?
    If the database service fails to start,
    Check the database configuration
    • Is the JDBC driver JAR accessible to the user running the iProject server?
    • Are the database username and password correct?
    • Is the database server's access control configured to grant the database username access to the iProject database from the iProject server? (See PostgreSQL Basics for information on access control in PostgreSQL.)
    If the socket service fails to start,
    Check the socket configuration
    • Is the keystore file accessible to the user running the iProject server?
    • Is the keystore file in PKCS12 or JKS format?
    • Was the keystore file generated using Internet Explorer or IIS? If so, try importing it into Mozilla or Netscape, and then re-exporting it.
    • Is the keystore password the same as the certificate password?
    • Is the keystore password entered correctly?
  2. Install the client on a computer that can communicate with the server
    (Makes sure that the iProject Web pages were set up correctly, and it's good experience.)

    If you get a Page Not Found error,
    Check that the page is present in the Web root directory of your Web server. If you installed the iProject Web pages in a subdirectory of the Web root, check them for links that might need to be updated.
  3. Connect to the server
    (Checks network accessibility and connection parameters.)

    If the client cannot connect to the server,
  4. Log in as the superuser lupine
    (First test of whether the database is installed and populated correctly.)

    If you get Login Failed messages,
    Try again, typing the password very carefully. Keep in mind that both the username and password are case-sensitive.
    If you get Could Not Load Key messages,
    Try restarting the iProject server and client.
    If all else fails,
    Rerun the installation, selecting only the Database Schema option.
  5. Open the demo project Waterflood Evaluation
    (Further test of the database prepopulation.)

    If this project does not appear in the list, fails to open, or opens with an empty directory tree,
    Rerun the installation, selecting the
    • Database Schema
    • Root Permission Cleanup
    • Sample Project Database Records and
    • Sample Project Data Files
    options.
  6. Upload a few image files to a subdirectory
    (Confirms that the data storage is configured correctly.)

    If you get File Not Found errors,
    • Check the Data Root Directory Configuration
    • Check the project root directory: In the Database Management Screen,
      1. Execute the select query SELECT dir_id, dir_spec FROM Directory WHERE parent_dir_id=0
      2. Check that the dir_spec values represent full paths to directories on the iProject server.
      3. If any do not, execute an update query like
        UPDATE Directory SET dir_spec='correct_path' WHERE dir_id=id_value_from_list
        for each one that needs correction.
    If you get Permission Denied errors,
    Check that the user running the iProject server has access to the data directory tree.
  7. View one of the image files in a browser
    (Verifies that Browser File Display is configured correctly.)

    If the image does not display,
    • Check the Browser File Display Configuration
    • If the browser file display directory accessible on the iProject server?
    • Is the browser file display directory accessible to the user running the iProject server?
  8. Download a few files
    (Further confirmation that the data storage configuration is correct.)
    Check File Not Found and Permission Denied errors as for Upload a few image files to a subdirectory above.

  9. Log out
    (This doesn't really test anything, it's how you end a session.)

If any of these steps fails and the above suggestions do not rectify the problem, please contact us for assistance.
Back Top Chapter Table of Contents

Maintenance

Routine Maintenance Tasks

Monitoring Server Status

The iProject server offers several displays providing information on the status of the system.


Figure 3: System Status display

The System Status display indicates free and total memory, and number of threads running.


Figure 4: Console Output display

The Console Output display shows any messages printed by the system. In particular, database errors will be displayed here (as well as in the log).


Figure 5: Service Status display

The Service Status display shows how well (generally, how fast) the system services are running.

Managing iProject Services

The iProject server provides user interfaces to perform various tasks associated with its services.


Figure 6: Database management interface

The database management interface allows the execution of any SQL query against the database, and provides a cleanup function that instructs the database to clean up deleted rows and freshen indexes.


Figure 7: Storage management interface

The storage management interface allows shared directory "roots" to be specified, which can then be used as starting points for mapping shared data into projects (by project administrators with appropriate permissions).
ID Unique ID number assigned by the database
Path Full path to the shared directory root on the iProject server
Name Display name for the shared directory root. For a mapped directory, this should include information about the actual host on which the directory resides.
Description Optional.
Subnet
Mask
Optional space-delimited lists of IP addresses and masks from which this shared directory root can be accessed. If present, then this shared directory root (and any subdirectories underneath it) will only be visible on clients connecting from network addresses matching at least one of the specified subnets. This restriction is in addition to any restrictions placed by user roles.

User the Refresh Add Edit and Delete buttons to manage shared directory "roots". In particular, the Refresh button must be pressed to initialize the list.


Figure 8: Log management interface

The log management interface allows the inspection of the iProject log, including all client requests, and processing errors. Selected events can be exported to a tab-delimited file and deleted.


Figure 9: Permission management interface

The permission management interface allows user sessions to be viewed and invalidated. Selected sessions can be exported to a tab-delimited file (for example, to be imported into Excel to generate usage statistics) and deleted.

Back Top Chapter Table of Contents

iProject Administrative Tasks

The iProject system installs with the superuser lupine defined. The password and user information for this account are set during installation.

The superuser will inevitably be called upon to perform various tasks, some of which are described below.

Creating and Editing Companies

The iProject provides a 'wizard' for creating a new company record. To begin adding a new company, select the Administration... Create New Company menu. The wizard will open and present a screen that looks like the one below, describing the steps involved. Click the Continue button to go on to the next step.


Figure 10: New Company introduction screen

The next screen of the wizard is where you'll enter the company information. The fields are self-explanatory; only Company Name is required.


Figure 11: New Company information screen

The next step is to choose a company administrator. The company administrator has extensive permissions over his/her company and the users and projects assigned to it, including updating company information, creating and updating user information, and full access to projects. See Default Role Permissions for complete details.

Every company should have an administrator, ideally belonging to the company itself. If you create a new account for the company administrator (recommended), the User Login and Password fields are required. See Creating and Editing Users for more information.


Figure 12: New Company administrator screen

The last step is a review step. The wizard creates a report of everything that's about to take place so that you may review it and make any necessary changes before the company is created. This report will show you all of the information you entered about the company in the first step, and who you've assigned (if anyone) as a company administrator. Clicking the Create Company button at this point will create the company and make the appropriate role adjustments for the user you've selected.


Figure 13: New Company review screen

Several standard roles are created with each company:

See Default Role Permissions for complete details.

Company information can be edited by selecting the Administration... Edit Companies... menu. This brings up the Edit Companies Screen.


Figure 14: Edit Companies screen

Creating and Editing Users

The superuser lupine has permissions to create and manage user accounts for all companies. Company administrators and user account managers have permissions to create and manage user accounts for their own company. User account information is edited using the Edit Users screen. To edit user account information, go to the Administration menu and scroll down to Users. A side menu should pop out, and in this menu select Edit Users...


Figure 15: Edit Users screen

The Edit Users window will look like the one above. The fields are self-explanatory; only User Login is required, but Email must also be specified for the user to receive notifications and automated activity reports.

When changing a password, you'll need to type the password twice: once in the Password field box, and again in the Confirm Password box. Passwords must be a minimum of seven characters long, must contain a mixture of upper and lower case characters, and may include numbers and special characters. You may not use the login name or the person's real name in the password, even if only partially.

Unchecking the Active Account checkbox will deactivate the account and invalidate any sessions the user has active. Be very careful about unchecking this box, especially for you own account. New user accounts created by lupine will be active or inactive according to whether this box is checked or not; those created by company admins or user managers will be active if the iProject license allows more active users, inactive if not. Only the superuser lupine has permissions to activate and deactivate user accounts.

To create a new user, you can either go to the Administration menu, scroll down to Users then select New User; or you can click the New... button in the Edit Users window. When creating a new user account, User Login and Password are required.


Figure 16: New User screen

Assigning Company Roles

The superuser lupine, company administrators, and company user managers have permissions to assign company-level roles to users using the Company Staff Roles screen. Open the Administration menu, then select Assign Company Staff Roles.


Figure 17: Company Staff Roles screen

First select the company for which you wish to assign roles, using the Company drop-list. Next select the user to whom you wish to assign roles, in the Users list on the left. Any roles the selected user currently holds will be shown checked in the Roles list on the right. Normally, selecting a company restricts the Users list to those users belonging to the selected company. Below the list is the Show All Users checkbox; checking this box will cause the list to show all users for whom you have permission to assign roles.

Finally, check the roles you wish to assign to the user in the Roles, and click the Save button. You can set multiple roles for multiple users and save them all at once, but if you change the selected company you will lose any changes you've made since the last time you clicked the Save button.

Clicking the Refresh button will cause all the screen information to be re-read from the server. Clicking the Reset will clear any changes since the last Save.

Back Top Chapter Table of Contents

Fine-Grained Access Control

The iProject permission model is fine-grained, meaning that permissions can be assigned on an item-by-item, user-by-user basis if needed: If a project participant needs to be able to see one file but not another, that can be accommodated. If another participant needs to see many files but only write into a few directories, or even to update only one specific file, that can also be handled.

To manage the complexity of constantly changing directory structures and file lists, the iProject permission model is also hereditary. This means that files, directories, and other items are arranged in a hierarchy, and that descendants inherit permissions granted or denied on their parents. This has the side effect that permissions may be granted or denied on an item to which they do not apply, as long as they apply to one or more of its descendants.

In this hereditary permission model, fine-grained-ness is accomplished by applying the nearest assigned grant or deny: If an item has a permission granted or denied, then that setting is applied. Otherwise, the setting for the nearest ancestor is applied. If no setting is found for any ancestor, the permission is denied.

An example may clarify the model. Suppose a user has been assigned permissions as follows:


Figure 18: Example permission assignments

Then the user would be granted or denied read/write on the files as follows:
File 1      Read      Denied      Denied on this file
Write Granted Granted on ancestor Directory A
File 2 Read Granted Granted on ancestor Project X
Write Denied Denied on this file
File 3 Read Granted Granted on ancestor Project X
Write Granted Granted on ancestor Directory A

Figure 19: Example permission status

Note that in the example, the usual file/directory hierarchy is extended to include the implication that directories descend from or belong to a project. This is conceptually correct in the iProject model. Notice also that a directory descends from its parent directory if it has one, from its project if not. The full hierarchy (including such case-wise inheritances) in the iProject is:


Figure 20: iProject object hierarchy

The inheritance of permissions means, for example, that once an engineer is assigned permission to read files in the Engineering directory, he or she will by default also be able to read files in any subdirectory created underneath it. The default can be overridden if needed, but in general this will allow work to get done with minimum headache.

The final feature in the iProject permission model is that permission assignments are usually grouped into roles, and these roles are assigned to users, rather than the individual permissions. Given the necessary complexity of hereditary fine-grained permissions, this is the most efficient way of assigning permissions; it is also how things work in practice.

Advanced Topics

INI File Overview

The iProject server stores some information related to system startup in an INI file, IrStandardServer.INI. The values entered in the Configuration group of the server screen are stored in sections [control], [database], [notification], [permission], [server], [smtp], [socket], and [sql_localization]. Screen layout information is stored in the [layout] and [window] sections.

More importantly, internal server setup information is stored in the [logic], [objects], and [services] sections. The [logic] and [objects] sections should not be modified at all. The [services] section should not be modified except as described in the next section.

Customizing Service Configuration

The [services] section of the INI file contains configurations for the services that make up the iProject server. Each line in this section looks something like

service_name = #start_sequence@service_class$parameter$parameter...

The only change that should be made to any of these lines is to add or remove a single minus "-" after parameter names. The presence of a minus after a parameter name means that its value will not be stored in the INI file; this may be desirable for certain passwords, for example. Note that any parameter value whose name includes password will be stored in an encrypted form in the INI file, if at all.

Automatic Server Restart

As described in Automatically Starting the iProject Server, specifying startup on the iProject server command line causes the server to automatically start its services. In order for this to work, the values of all configuration parameters must be stored; that is, no minuses "-" after parameter names.

File System Mapping

The iProject normally stores data files in a directory hierarchy below a specified data root directory. Each project in the iProject system has its own project root directory created below the data root when the project is constructed. Directories and files created, modified, and deleted from projects are created, modified, and deleted below the project root. If necessary, files in the iProject system may generally be located on the server by starting from the data root and working down. The only thing to keep in mind is that spaces, most punctuation, and exotic characters in iProject file and directory names may be mapped to underscores "_" in the filesystem names (though not in the iProject display), if required to make a valid filesystem name.

The iProject allows this behavior to be modified in three ways:

Except in the case of shared directories, directories and files in the iProject storage hierarchy should generally not be modified outside of the iProject system. For performance reasons, the iProject mirrors some of the filesystem data in its database, and can become out-of-sync if the filesystem is modified without its knowledge.

Customizing Client Resources

The text and icons shown in the iProject client are almost all contained in the /bin/IrClient_Resources.jar archive. To make changes to resources, first make a backup copy of the original, then extract the contents into a temporary directory (using a tool like WinZip, or jar -x).

Finally, reconstruct the resource archive using
jar -cf IrClient_Resources.jar resources
and place the new archive in the /bin directory of the Web server document tree.

Support for Multiple Languages

The iProject client automatically selects a set of resources that best matches the locale of the computer on which it is running. Currently US English (en_US), Spanish (es), and Traditional Chinese (zh_TW) resources are available. US English is used by default for other locales. Contact iReservoir.com to request additional language resources.

Back Top Chapter Table of Contents

Troubleshooting

Server Problems

If all the data suddenly seems to vanish,
Any of a few things could cause this:
If the iProject system starts running slowly
Again, there are a few possible causes:

Cross-Checking Logs

When debugging client connection problems, three logs are of interest:

First identify exactly when the user could not connect, and what IP address (or at least subnet) they were attempting to connect from. Check the session list for that time, and see if there is a getPublicKey request from that IP or subnet. There shouldn't be, but if there is then the problem is likely to be either a firewall/proxy that is configured not to allow responses to requests, or that responses are being generated with characteristics (such as IP options) rejected by a firewall.

Next check the Web server logs for that time and IP address, looking for failed requests for JAR files. There shouldn't be, but if there are then the problem is likely to be some kind of exotic browser pathology - we've seen it in customized versions if Internet Explorer. Look for bad URLs with missing or extra slashes ("/") in the path part.

Finally check the firewall log for that time and IP address, looking for dropped packets. If there are, then your own firewall rules can probably be adjusted to allow the traffic through. (Various things can happen here: some client networks produce packets that always have IP options set, some produce new connection packets without the SYN flag, some produce leading packets that are outright invalid.) If there are none, then the problem is probably in the user's LAN firewall, and the answer is to check with their network admin.

Obtaining Support From iReservoir.com

If an issue does not seem to be addressed anywhere else, please contact iReservoir.com for assistance. If the issue seems to involve a system malfunction, some information available from the iProject server may assist in the resolution of the issue. If possible, please:

Call iReservoir.com or email support@ireservoir.com with a description of the issue.

Back Top Chapter Table of Contents

Known Issues

Known Server Issues

Issue

When starting services, if the Keystore Passphrase is entered incorrectly, the Socket service does not report a failure on startup, but generates a lot of error messages on the console (and does not accept connections).
Status
Bug, in progress
Workaround
After starting services, check the Console Output to make sure the socket service really started correctly.

Issue

When restarting services, the Keystore Passphrase value does not take effect, so that if it was entered incorrectly it cannot be corrected.
Status
Seems to be a bug in the JRE, attempting to code around it, in progress.
Workaround
Close and reopen the server, and type carefully!

Known Client Issues

Issue

When selecting certain types of items from the search screen, the display doesn't scroll to the selected item.
Status
Bug, in progress
Workaround
The correct list should display, and the correct item should be highlighted; scroll down in the list to find the highlighted item.

Issue

When using some versions of Mozilla/Netscape, can't connect to two iProject servers simultaneously.
Status
Feature request, in progress
Workaround
None.

Issue

After uploading into a directory on the server, pressing refresh in the iExplorer window causes the file list to display the contents of the project root directory (instead of the directory into which data was uploaded).
Status
Bug, in progress
Workaround
After pressing refresh, select the project root directory and then the desired directory in the project tree.
Back Top Chapter Table of Contents

Dealing with Digital Certificates

All communication between the iProject client and server is conducted over sockets that encrypt data using an SSL certificate, to protect data while in transit. We outline the process of obtaining an SSL certificate using Apache and OpenSSL.
  1. Generate an RSA private key:
    openssl genrsa -des3 -out iproject.key 1024
  2. Create a Certificate Signing Request (CSR):
    openssl req -new -key iproject.key -out iproject.csr
  3. Obtain a signed certificate from a Certifying Authority (CA):
  4. Install the signed certificate:
    Save the encoded certificate text returned by the CA in a file called iproject.crt
  5. Export the signed certificate to a PKCS12 file:
    openssl pkcs12 -export -in iproject.crt -inkey iproject.key -out iproject_openssl.p12 -name iprojectssl -chain -nomaciter -noiter
  6. Import the PKCS12 file into Mozilla:
    In Mozilla, go to Edit ... Preferences ... Certificates ... Manage Certificates... ... Your Certificates,
    Then click Import and select iproject_openssl.p12.
  7. Export the certificate from Mozilla into a new PKCS12 file:
    In Mozilla, go back to Edit ... Preferences ... Certificates ... Manage Certificates... ... Your Certificates
    Then select the certificate you imported, click Backup, and save the certificate to iproject.p12.
    iproject.p12 is now a file that can be specified in the PKCS12 or JKS Keystore entry of the Socket service configuration.
Importing and exporting with Mozilla "fixes" the PKCS12 format so that Java's SSL implementation can interpret it. Internet Explorer (IE) cannot be used for this purpose instead; importing and exporting with IE only makes the format worse.
Back Top Chapter Table of Contents

PostgreSQL Basics

PostgreSQL is a free, open-source relational database management system (RDBMS). Visit the PostgreSQL homepage www.postgresql.org for the latest information.

Installing PostgreSQL

The iProject installation CD includes RPMs for PostgreSQL. They should be installed roughly in the order:
  1. postgresql-libs
  2. postgresql
  3. postgresql-contrib
  4. postgresql-jdbc
  5. postgresql-server
  6. postgresql-docs

Configuration

  1. Set up a PostgreSQL data directory
    This must be an initially empty directory, and it should be on its own dedicated drive. PostgreSQL requires that the directory owner be postgres:postgres (the postgres user and group are created by the PostgreSQL installation), and that the owner has exclusive permissions on the directory.
  2. Set the PGDATA environment variable to point to the PostgreSQL data directory
  3. Initialize the template database by running initdb -E UNICODE
    This should only be done once per PostgreSQL installation.
  4. Set the TZ environment variable to one of the values found in /usr/share/zoneinfo
    This is required for the iProject's email notification feature to function properly.
  5. Configure the PostgreSQL Server
    We have found it helpful to change a few of the default configuration settings. PostgreSQL saves its settings in a file called postgresql.conf, which is usually located in the directory pointed to by PGDATA. The settings we use are:
                # CONNECTIONS AND AUTHENTICATION
                tcpip_socket        = true
                max_connections     = 50
    
                # RESOURCE USAGE (except WAL)
                shared_buffers      = 4096
                sort_mem            = 4096
                vacuum_mem          = 16384
    
                # WRITE AHEAD LOG
                wal_buffers         = 16
                checkpoint_segments = 8
    
                # LOCK MANAGEMENT
                deadlock_timeout    = 5000
                

Creating the iProject Database

  1. Start the PostgreSQL server with postmaster -i &
  2. Create the iProject database catalog with createdb -E UNICODE iproject
    The -E UNICODE option causes strings to be stored in UTF-8 format.

Access Control in PostgreSQL

It is best to have the iProject database service connect to the PostgreSQL server as a restricted database user, instead of the postgres user. This entails
  1. Creating a database user in PostgreSQL, and granting permissions on the iProject tables and views.
    We provide a script for this, which creates a user iprojectuser with password Dorthonion; you should at least edit the script to change the password.
  2. Specifying the user connection in $PGDATA/pg_hba.conf
    If the iProject and PostgreSQL servers are running on the same computer,
    Add a line like
    local iproject iprojectuser password
    If the iProject and PostgreSQL servers are running on different computers,
    Add a line like
    host iproject iprojectuser iProject_server_IP_address 255.255.255.255 password
    If you do not wish to require authentication, you may change the password values to trust.

Maintenance

Some utilities for PostgreSQL are:

Back Top Chapter Table of Contents

Default Role Permissions

The iProject installs with two "global" roles:
Root I.e., the superuser role. The superuser has permissions to do everything.
Project Creator All permissions needed to create new projects in the iProject system, and to make initial user assignments (e.g. assigning a Project Admin).
and automatically creates some standard roles along with each new company:
Company Admin All permissions for all objects belonging to a given company. See the iProject object hierarchy.
Company User Manager Permissions to manage users and assign roles for a given company, including all its projects. Note that this does not by itself give permission to assign company users to projects belonging to another company. To make such assignments, "Project Staff Assignment" permissions (below) for the project would also be required.
View Company Users Permission to view all the users in a given company.
and project:
Project Admin All permissions for all objects and data belonging to a given project. See the iProject object hierarchy.
Project Staff Assignment Permission to assign roles for a given project. Note that this does not by itself grant permissions on users; permissions on users must come from another role, such as "Company User Manager" (above).
View Project Team Permission to view all users assigned to a given project. This is intended to allow project team members to see the entire project team.
All Data Read/write permissions on all data for a given project. Includes general project permissions (such as permission to view the project itself).
(Specific Task Roles) Permission to view and change status for a given task in a given project. Includes general project permissions (such as permission to view the project itself), and read/write permissions on data associated with the task.
(Specific Directory Roles) Read/write permissions on data in a specific directory in a given project. Includes general project permissions (such as permission to view the project itself). One such role is created for each top-level directory in the project.
(Visibility Roles) Permission to view and create messages with the given visibility (public or private) in a given project.
The complete set of permissions for each role is listed in the tables below. In our experience, these roles are the most generally useful ones, and cover almost all the situations we have encountered.

The permission levels in the tables below indicate "how many" items the role grants permission for. For example, a "Company Admin" role grants "Project...View" permission at the "Company" level, meaning that a user assigned a "Company Admin" role can view all the projects that belong to that company. A "Company Admin" role neither grants nor denies permission to view projects belonging to other companies; it only addresses projects for its own company. (Permission to view other projects would have to come from some other role.) Compare this to a "Project Admin" role, which grants "Project...View" permission at the "Project" level, i.e. it only grants permission to view itself.
Global Role grants permission on all items of the given type.
Company Role grants permission on items belonging to a particular company (and to any projects and users belonging to the company).
User Role grants permission on items belonging to a particular user (i.e. the user account itself, and any email reports the user has defined)
Project Role grants permission on items belonging to a particular project (esp. tasks, directories, and files). Users also "belong to" a project once they are assigned to it.
Task Role grants permission on a particular project task (and its files and directories).
Directory Role grants permission on a particular directory (and its files and subdirectories).
Visibility Role grants permission on messages with a particular visibility (message visibilities belong to a particular project, so permission to view "public" messages in one project does not extend to other projects).

System-Level Roles

Host Roles Company Roles
Object Action Root Project Creator Company Admin Company User Manager View Company Users
Company
View Global Global Company