================================================================================
Test... Are you using 80 columns of text
12345678901234567890123456789012345678901234567890123456789012345678901234567890
================================================================================
CSC 442F: SOFTWARE ENGINEERING
==============================
Course Project: Part 0
Application-Level Network Protocol Version 1.1
By: Joveria Asif
Khalid Mufti
David Tam
1.0 INTRODUCTION
================
Changes from version 1.0 to version 1.1 of this protocol are described at the
end, in section 4.0.
This document describes the application-level network protocol implemented to
produce the Desk Calendar/Scheduler. This document describes the client server
interaction rules, client and server states, transaction rules, valid commands
issued by the client, and appropriate responses generated by the server.
The polling method of interaction is used by the client. That is, the client
must explicitly ask for data from the server. The server will only send
information to the client when it is explicitly requested.
The server may use any valid port number following the general unix
guidelines of TCP/UDP port usage. The port is specified upon startup of the
server. The server can handle multiple, simultaneous clients.
Currently, the smallest unit of time for event scheduling is 1 hour.
1.1 Client Server Interaction
-----------------------------
All communication is initiated by the client. The client must periodically
poll the server for information. It polls the server to obtain event
information for each hour, day, or month.
It polls the notification box to obtain the following information from
invitors:
- new meetings
- modifications to meetings
- cancellations of meetings
It polls the notification box to obtain the following information from
invitees:
- acceptances
- rejections
- acceptance with shortened attendance
When the client wants to create an event as a personal or group event
the appropriate SET or CREATE command is issued.
1.2 Client and Server States
----------------------------
State information from one session to the next is not stored on the client.
Instead, it is stored on the server through the SET PREFS command mentioned in
proceeding section. Clients may save state information such as which view the
user selected in the last session, sizes of windows, colour settings, font
sizes, etc...
When a connection is made between the client and server, the server is in the
login state and does not proceed any further until a valid login name and
password are specified. Once validated as a normal end-user, the server
responds to normal user commands, as mentioned in preceeding section below.
There is a root account similar to the unix root account. Login as root is
similar to the unix approach. The username "root" is specified and the correct
password must be suplied. If the root user logs in, the server responds to
normal user commands as well to an addition set of administrative commands.
Once the logout command is issued the server will disconnect from the client.
A normal connection is explicited terminated with a logout command. However, a
connection may be accidentally lost due to a client crash, line noise, network
problems, etc. In such a case, if the server has received the complete command
(i.e. the command was terminated with a carriage return ), it will execute
the command. If only part of a request command is received from the client
(i.e. the command was not followed by a ), the server will not execute
the command. When the connection is re-established, the server will be in
the login state mentioned in the previous paragraph.
From the client's point of view, when a complete command is sent (with a )
but a connection is lost to a network disconnection, the client should check
side effects to determine if the command was executed. (E.g. look for the
scheduled meeting). Even if the client has sent the , there is no way of
knowing if the server received the . However, *** EITHER THE TRANSACTION
WAS PROCESSED COMPLETELY, OR IT WAS NOT PROCESSED AT ALL. ***
2.0 SERVER RESPONSES
====================
All server responses have the following format:
...
Server Msg ID: Each message response generated from the server has a unique ID.
The following series of IDs are used.
1xx OKs
2xx Results show no success due to server-side control
3xx Errors
5xx Invalid state to issue command
Description: A quick description of what the ID refers to. (256 chars)
Requested Info: If the client requested any information, that information will
follow. Since each function returns specific information,
please refer to the appropriate function. If any data has to be
clumped together, it will be stored within the ||
pipe symbols.
CR: This is a carrage return which marks the end of the requested
data message. It has the standard ASCII code decimal value of
13. **NOTE** Since this symbol is placed at the end of each
and every server response, it will not be explicitly indicated
in the commands mentioned below.
2.1 Client Requests/Functions
-----------------------------
This section examines all possible requests that a client can send to the
server, with all required parameters and appropriate server responses. Please
note that the command keywords must be issued in UPPERCASE. Words in angel
brackets < and > specify parameters that must be entered. Pipe symbols | denote
that spaces are allowed in the field value, however, the value must be
encapsulated by the pipe symbols. Obviously, the pipe symbol itself can no
longer be used as part of the contents of the field. Again, please note that all
responses from the server will be terminated with a carrage return. This
symbol will not be explicitedly indicated in the commands below. This omission
will help to improve clarity of the protocol description.
There are a few restrictions that apply to the system that affect this protocol.
1. A room can not have the same name as a user
2. The maximum command length is 4096 chars. This length can be easily upgraded
by changing a constant value in the server source code.
3. Meetings can not take place for more than 24 hours, nor can they cross the
day boundaries (e.g. 11pm to 1am). If this is necessary, two separate
meeting events should be scheduled by the client.
4. For parameters that are delimited by the "|" pipe symbols, neither carriage
returns nor "|" symbols are allowed in between the original "|" pipe
symbols.
5. The command sent to the server must consist of exactly one carriage return
placed at the end of the transmitted command. s placed anywhere
else will cause the server to interpret it as the end of command
transmission.
================================================================================
LOGIN USER
--------------------------------------------------------------------------------
Description
-----------
Before the server accepts any client requests, the client must register by
logging in. This must be the first command for all existing users, aside from
the administrator. After 3 unsuccessful logins, the connection is closed.
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars max)
Server Responses
----------------
100 OK Hello please enter your password.
300 Invalid Username. Failed attempt #1.
301 Invalid Username. Failed attempt #2.
302 Invalid Username. *** Security alert *** Closing connection.
500 Error. Please log out first.
================================================================================
LOGIN ROOT
--------------------------------------------------------------------------------
Description
-----------
This login request is the same as the one for clients, but is strictly for
system administrators. After 3 unsuccessful logins, the connection is closed.
Parameters
----------
None.
Server Responses
----------------
100 OK Hello root please enter your password.
300 Invalid Username. Failed attempt #1.
301 Invalid Username. Failed attempt #2.
302 Invalid Username. *** Security alert *** Closing connection.
500 Error. Please log out first.
================================================================================
LOGIN NEWUSER
--------------------------------------------------------------------------------
Description
-----------
This request can be used for new users to log in. The password is sent as
clear text and not encrypted. Although it is recommended to use Root access
for creating new users, the client, nevertheless, can accomplish the same task
by using this command.
Parameters
----------
Username: The user name to be assigned. (8 chars max)
Password: The password for this user name. (16 chars)
Server Responses
----------------
100 OK account has been created. Thank you. You are now logged in.
303 Invalid. already exists! Please choose another username.
500 Error. Please log out first.
================================================================================
LOGIN PASSWORD
--------------------------------------------------------------------------------
Description
-----------
After logging in, the next command requires the proper password be entered for
the user, except for new users logging in. After 3 unsuccessful attempts, the
connection is closed. The password is sent as clear text and not encrypted.
Parameters
----------
Password: The password for the user name entered. (16 chars)
Server Responses
----------------
100 OK Welcome back . Please request now.
304 Invalid. Failed attempt #1.
305 Invalid. Failed attempt #2.
306 Invalid. *** Security alert *** Closing connection.
500 Error. Please log out first.
501 Error. Please log in first.
================================================================================
USER CHANGEPASSWORD
--------------------------------------------------------------------------------
Description
-----------
This command is used to change the user's password. The passwords are sent as
clear text and not encrypted. As an obvious security feature, the user may only
change his/her own password. Only the administrator can change another user's
password. Administrators should examine the
ADMIN CHANGEPASSWORD command.
Parameters
----------
OldPassword: The old password for the user. (16 chars)
NewPassword: The new password for the user. (16 chars)
Server Responses
----------------
100 OK Password changed.
307 Invalid. Failed attempt. Old password incorrect.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
USER LOGOUT
--------------------------------------------------------------------------------
Description
-----------
This command ends the user session.
Parameters
----------
None.
Server Responses
----------------
100 OK Goodbye
501 Error. Please log in first.
================================================================================
USER HELP
--------------------------------------------------------------------------------
Description
-----------
This command prints out a list of commands and their parameters.
Parameters
----------
None.
Server Responses
----------------
100 OK I will help you. Here is a list of commands.
HELP --- LOGIN --- LOGIN root --- LOGIN NEWUSER
--- PASSWORD --- CHANGEPASSWORD
--- LOGOUT --- ... etc ...
================================================================================
ADMIN DELETE
--------------------------------------------------------------------------------
************************************
Description
-----------
This function deletes an existing username from the server. However, corresponding
files and directories are not erased. The user is only prohibitted from logging
into the system. To entirely remove the user from the system, the files must
be manually removed by the system administrator through standard unix commands.
Before issuing this command, the user must log in and cancel all meetings with
other users. This important step is necessary to solve complex dependency
problems inherent to the system.
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars)
Server Responses
----------------
100 OK Successful deletion of
308 Invalid Username.
338 Error. Can not delete root.
501 Error. Please log in first.
502 Error. Please execute LOGIN PASSWORD command first.
504 Error. Administrator access only!
================================================================================
ADMIN ADD
--------------------------------------------------------------------------------
Description
-----------
This function creates a new user for the server. It has the equivalent
functionality of the LOGIN NEWUSER command but allows the
administrator to stay connected as the root user. This may be useful if the
administrator would like to create several users without the need to log in and
log out every time. The password is sent as clear text and not encrypted.
Parameters
----------
Username: The user name to be assigned. (8 chars max)
Password: The password for this user name. (16 chars)
Server Responses
----------------
100 OK account has been created. Thank you.
308 Invalid Username.
502 Error. Please execute PASSWORD command first.
504 Error. Administrator access only!
================================================================================
ADMIN CHANGEPASSWORD
--------------------------------------------------------------------------------
Description
-----------
This command is used by the administrator to change a user's password. It may
come in handy when a user forgets his/her password. The administrator can reset
the password to a generic one and restore the user's access. As an obvious
security feature, only the administrator may issue this command. The password
is sent as clear text and not encrypted.
Parameters
----------
Username: The username whose password will be changed.
NewPassword: The new password for the user. (16 chars)
Server Responses
----------------
100 OK Password changed.
310 Username does not exist.
502 Error. Please execute PASSWORD command first.
504 Error. Administrator access only!
================================================================================
ADMIN CREATE ROOM
--------------------------------------------------------------------------------
Description
-----------
This command is used by the administrator to add new rooms to the system. The
room name and its capacity must be specified.
Parameters
----------
Room: This is the room name. (12 chars max)
Capacity: This is the room capacity. (unsigned int)
Server Responses
----------------
100 OK New room added to room list.
502 Error. Please execute PASSWORD command first.
504 Error. Administrator access only!
================================================================================
ADMIN DELETE ROOM
-------------------------------------------------------------------------------
Description
-----------
This command is used by the administrator to delete rooms from the system. The
room name must be specified.
Parameters
----------
Room: This is the room name . (12 chars max)
Server Responses
----------------
100 OK Room delete from room list.
337 Error. Invalid Room.
502 Error. Please execute PASSWORD command first.
504 Error. Administrator access only!
================================================================================
REQUEST QUICKHOURINFO
--------------------------------------------------------------------------------
Description
-----------
This function is used to request quick information (description) for a
particular hour for any date. If there is no event, an empty string ‘’, for the
description, will be returned. The creator of the meeting, length, and quick
description are returned as a result. As mentioned in the introduction this
command must be periodically issued by the client to obtain up-to-date
information in the user's schedule.
Quick information is publicly accessible by all users of the server.
Consequently, private information should be kept in the || field.
Retrieval from the that field is discussed in the next command.
Parameters
----------
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Server Responses
----------------
100 OK ||
201 No event exists.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST DETAILEDHOURINFO
--------------------------------------------------------------------------------
Description
-----------
This function is used to request detailed, information (description) regarding a
particular EventId. If there is no event, an error will be returned. Since the
field contains private, detailed information, this command is only
accessible by the owner of the event. If the event happens to be a meeting,
members who were invited to the meeting may also access this command to obtain
the private information.
When this command is issued successfully, all information fields for the event
are returned. These consist of the length of the event, the quick description,
the detailed description, the location of the event, the total number of
internal and external invitees (including the creator), the creator, the number
of internal invitees other than the creator, and the username and status of each
internal invitee.
The attendance status can have the following values:
0 = username has not responded or decided yet
1 = Ok, username will attend
2 = No, username will not attend
4 = username will attend but will shorten his/her attendance and make an
early departure / late entrance.
Parameters
----------
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Server Responses
----------------
100 OK || ||
<# of Users> ...
201 No event exists.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
505 Error. Not authorized to look at 's schedule.
================================================================================
REQUEST INFODAY
--------------------------------------------------------------------------------
Description
-----------
This function is used to request quick information (description) for a
particular day for any date. The creator of the meeting, length, and quick
description are returned as a result. If there is no event, a negative integer
will be returned for each of the fields. For each day, 24 triplets will be
returned.
Parameters
----------
Username: A valid username. (8 chars max)
Year: The 4 digit year of the day. (unsigned int)
Month: The 2 digit month of the day. (unsigned int)
Day: The 2 digit number for the day. (unsigned int)
Server Responses
----------------
100 OK || ... ||
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST CALENDAR
--------------------------------------------------------------------------------
Description
-----------
This function, given a month and year simply determines on which day the first
and last of the month lie (2 unsigned int). Each of the 2 numbers returned
varies from 0-6, with 0 being Sunday and 6 being Saturday.
Parameters
----------
Year: The 4 digit year of the day. (unsigned int)
Month: The 2 digit month of the day. (unsigned int)
Server Responses
----------------
100 OK
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST INFOMONTH
--------------------------------------------------------------------------------
Description
-----------
This function, given a username, year, and month returns a 1, unsigned int, for
each day of the month on which the username has at least one appointment. If
there are no events on a day, then a 0, unsigned int, is returned. The
marker (not shown) should be used to detect the end of data since the number
of days varies from month to month.
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars max)
Year: The 4 digit year of the day. (unsigned int)
Month: The 2 digit month of the day. (unsigned int)
Server Responses
----------------
100 OK ...
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST USERINFO
--------------------------------------------------------------------------------
Description
-----------
This function simply returns information for the provided username. The
information returned depends on the following FieldVal values:
FieldVal #0: All items.
FieldVal #1: First name. (max of 25 chars)
FieldVal #2: Last name. (max of 25 chars)
FieldVal #3: Address. (max of 128 chars)
FieldVal #4: Phone #. (max of 15 chars)
FieldVal #5: Fax #. (max of 15 chars)
FieldVal #6: Email. (max of 50 chars)
FieldVal #7: Comment. (max of 256 chars)
Initially, when the user is first created, the string "" is placed in
each field.
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars max)
FieldVal: The particular information item, 0-7, required. (unsigned int)
Server Responses
----------------
100 OK || || || || || ||
||
100 OK ||
100 OK ||
100 OK ||
100 OK ||
100 OK ||
100 OK ||
100 OK ||
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST NOTIFICATION
--------------------------------------------------------------------------------
Description
-----------
This function checks if any new notifications are present for the current
username. If so, the notifications are returned as quadruplets of
(1) an originator field, (2) type of notification, (3) associated EventId, and
(4) a description of the notification. The response will be terminated by a
(not shown below). If no new notifications are present, an error message
is generated.
The type of notifications are as follows:
0 = it is a request sent by the creator of the meeting
1 = it is an acceptance sent from an invitee
2 = it is a rejection sent from an invitee
3 = it is a deletion sent by the creator of the meeting
4 = it is a an acceptance but with shortened attendance (invitee's reponse)
5 = it is a change in room location of the meeting
Old notifications that were accepted in the past are automatically placed into
the proper event slot(s) in the calendar server (in the events.dat file). Thus,
old notifications are automatically deleted from the notify.dat file by the
server.
The client must periodically issue this command to update the user's notification
box. If a client does not use this command, the end user may not have
up-to-date information. It is suggested that the client issue this command
every 30 seconds, however, there is no restriction placed on the time interval.
The operation of the server is not affected by the lack of client polling.
UNRESPONDED NOTIFICATIONS ARE RESENT TO THE CLIENT EVERY TIME THIS COMMAND IS ISSUED.
It is up to the client to make sure that the user does not get the duplicates of the same
message.
Parameters
----------
None.
Server Responses
----------------
100 OK || ...
||
202 No new notifications yet.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST NOTES
--------------------------------------------------------------------------------
Description
-----------
This function returns a 256 char max notes list. This area is provided to write
down general comments, e.g., "Received assignment #1", etc.
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars)
Year: The 4 digit year of the day. (unsigned int)
Month: The 2 digit month of the day. (unsigned int)
Day: The 2 digit number for the day. (unsigned int)
Server Responses
----------------
100 OK ||
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST TODOLIST
--------------------------------------------------------------------------------
Description
-----------
This function returns a 256 char max To Do List which corresponds to items that
have to be done during the day but do not have a specific time.
For example, "buy textbooks".
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars)
Year: The 4 digit year of the day. (unsigned int)
Month: The 2 digit month of the day. (unsigned int)
Day: The 2 digit number for the day. (unsigned int)
Server Responses
----------------
100 OK ||
501 Error. Please log in first.
505 Error. Not authorized to look at 's schedule.
================================================================================
REQUEST USERLIST
--------------------------------------------------------------------------------
Description
-----------
This function returns all the usernames registered with the server. The CR
marker (not shown below) should be used to detect the end of data since the
number of users can vary.
Parameters
----------
None.
Server Responses
----------------
100 OK ...
203 No users registered yet --- registry empty.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST ROOMLIST
--------------------------------------------------------------------------------
Description
-----------
This function simply returns a list of rooms and their maximum capacities.
The response is sent back as pairs consisting of rooms and their capacities.
Parameters
----------
None
Server Responses
----------------
100 OK ...
339 No rooms defined yet.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
REQUEST PREFS
--------------------------------------------------------------------------------
Description
-----------
This function returns a block of client-definable text that is used to save
client preferences and state information. Initially, it is empty.
Parameters
----------
None.
Server Responses
----------------
100 OK ||
205 Prefs are empty.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
SET USERINFO ||
--------------------------------------------------------------------------------
Description
-----------
This function simply sets the information for the provided username. The
particular information to set, depends on the following FieldVal values:
FieldVal #1: First name. (max of 25 chars)
FieldVal #2: Last name. (max of 25 chars)
FieldVal #3: Address. (max of 128 chars)
FieldVal #4: Phone #. (max of 15 chars)
FieldVal #5: Fax #. (max of 15 chars)
FieldVal #6: Email. (max of 50 chars)
FieldVal #7: Comment. (max of 256 chars)
Initially, when the user is first created, the string "" is placed in
each field.
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars max)
FieldVal: The particular information item, 1-7, required. (unsigned int)
NewVal: See list above.
Server Responses
----------------
100 OK Address set.
100 OK Comment set.
100 OK Email set.
100 OK Fax # set.
100 OK First Name set.
100 OK Last Name set.
100 OK Phone # set.
315 Invalid FieldVal.
506 Error. Not authorized to set 's info.
================================================================================
SET TODOLIST ||
--------------------------------------------------------------------------------
Description
-----------
This function sets the 256 char max To Do List which correspond to items that
have to be done during the day but do not have a specific time.
For example, "buy textbooks".
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars)
Year: The 4 digit year of the day. (unsigned int)
Month: The 2 digit month of the day. (unsigned int)
Day: The 2 digit number for the day. (unsigned int)
NewVal: The new text block for the To Do List. (256 chars)
Server Responses
----------------
100 OK To Do List set.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
SET NOTES ||
--------------------------------------------------------------------------------
Description
-----------
This function sets the 256 char max notes list. This area is provided to write
down general comments, e.g., "Received assignment #1", etc.
Parameters
----------
Username: The user name, assigned when the account was created, for the client.
(8 chars)
Year: The 4 digit year of the day. (unsigned int)
Month: The 2 digit month of the day. (unsigned int)
Day: The 2 digit number for the day. (unsigned int)
NewVal: The new text block for the To Do List. (256 chars)
Server Responses
----------------
100 OK Note List set.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
506 Error. Not authorized to set 's info.
================================================================================
SET PREFS ||
--------------------------------------------------------------------------------
Description
-----------
This function sets the block of client-definable text that is used to save
client preferences and state information. Note that this command will overwrite
the previous contents of PREFS. If a client wishes to modify the contents, it
should first request the contents (REQUEST PREFS), make modifications, and then
save the new contents using SET PREFS.
Parameters
----------
None.
Server Responses
----------------
100 OK Block of client-definable text accepted.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
CREATE PEREVENT ||
||
--------------------------------------------------------------------------------
Description
-----------
This function creates a personal event entry in the scheduler. This includes
personal appointments or meetings with people external to the office. Either the
quick description or detailed description field should be used to record
external people names. If the external names are confidential, names should be
entered in the detailed description field.
Parameters
----------
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Len: The length of the meeting. (unsigned int)
QuickDes: The quick description of the event. (256 chars)
DetailDes: The detailed description of the event. (256 chars)
Room: The room which the event will take place. (12 char) If you want the
server to automatically find a room within capacity, specify
YES_ROOM. If you do not want the server to do this, specify NO_ROOM.
NumInRoom: The total number of people who will meet in that room. (max val of
int=999)
Server Responses
----------------
100 OK Personal event scheduled.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
506 Error. Not authorized to set 's info.
508 Error. Schedule conflict.
================================================================================
CREATE MEETEVENT ||
|| [ ... ]
--------------------------------------------------------------------------------
Description
-----------
This function creates a group meeting event entry in the scheduler. This
function should not be used to create non-meeting events (e.g. a meeting with
zero other members which is really just a personal event). The CREATE PEREVENT
command should be used instead. After this command is called, the server will
take care of sending notification requests to all invited users. The client
does not have to manually send these notification requests.
There is a limit on the maximum number of invitees since the command length is
limited to 4096 characters (as mentioned in section 1.1). Given that each
invitee's username is approximately 10 characters in length, 100 invitees would
consume 1000 characters. This situation would leave approximately 3000
characters for the eventid, length, quick description, detailed description,
room, total in room, and numer of internal invitees. Since the number of
invitees will typcally exceed 100 users, this restriction should not create any
problems.
The server will maintain a meeting as pending indefinitely and will not discard
it due to staleness. The invitor of the meeting may choose to delete the
meeting by issuing the DELETE command mentioned further in this document.
Parameters
----------
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Len: The length of the meeting. (unsigned int)
QuickDes: The quick description of the event. (256 chars)
DetailDes: The detailed description of the event. (256 chars)
Room: The room which the event will take place. (12 chars) If you want the
server to automatically find a room within capacity, specify
YES_ROOM. If you do not want the server to do this, specify NO_ROOM.
NumInRoom: The total number of people who will meet in that room. (max val of
int=999)
Num: The number of other internal people invited to this meeting.
(unsigned int greater than 0)
Username: The username of each person invited to the meeting.
Server Responses
----------------
100 OK Notifications sent. Meeting Pending.
321 Invalid Length.
322 Invalid Number of Users.
340 SORRY NO ROOM FOUND
341 SORRY ROOM DOES NOT EXIST
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
506 Error. Not authorized to set
508 Error. Schedule conflict.
================================================================================
CREATE RESPONSE || ||
--------------------------------------------------------------------------------
Description
-----------
This command is used by invitees to respond to meeting invitations.
(e.g. For sending accept/reject responses to the initiator of a meeting.)
Once a user responds, the appropriate notification entry is automatically
removed from the user's notification box. As well, if the user creates an
"accept" response, the appropriate event slot in the user's schedule is
automatically updated.
Parameters
----------
Type: This field is an unsigned int that identifies the type of
notification message. A 1 identifies that the meeting was accepted
by username, a 2 identifies that the meeting was rejected by
username, and a 4 means the meeting was accepted but username's
attendance will be shortened.
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Length: This is the length of the meeting that the user is responding to.
OldDescription: This field is the text message that was received in the original
notification. This field is needed in order to delete the proper
notification.
NewDescription: This field holds the descriptions of the response. If the
parameter is set to 2 (rejection), a description of why the meeting
was rejected must be provided (max 256 chars). Similarly, if the
parameter is set to 4, a description must be provided as
well. If the parameter is set to 1 (accept), the client may
optionally provide a description. If no description is given, the
server will insert the value "Meeting accepted".
Server Responses
----------------
100 OK Notification sent.
324 Invalid Type.
342 Error, meeting does not exist.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
507 Error. Not authorized to send response to event
================================================================================
DELETE PEREVENT
--------------------------------------------------------------------------------
Description
-----------
This function deletes a personal event entered in the scheduler.
Parameters
----------
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Server Responses
----------------
100 OK Personal event deleted.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
509 Error. No existing personal event scheduled.
512 Error. Not authorized to delete event
================================================================================
DELETE MEETEVENT
--------------------------------------------------------------------------------
Description
-----------
This function deletes a group meeting event entered in the scheduler. Aside,
from removing the event from everyone’s schedule, notification messages are also
generated.
Parameters
----------
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Desc: A string stating why the meeting was cancelled. (256 chars)
Server Responses
----------------
100 OK Group meeting event deleted.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
511 Error. No existing meeting event scheduled.
512 Error. Not authorized to delete event
================================================================================
DELETE NOTIFICATION
--------------------------------------------------------------------------------
Description
-----------
This function deletes a notification message that is currently in the user’s
notification box. The parameters specified are used to identify the exact
notification to delete. If the field has not been answered (set to 0),
then the notification will not be deleted. This prevents a client from deleting
a notification that he/she has not responded to.
Note that the if the client responds to a meeting invitation by using the CREATE
RESPONSE command, the appropriate notification is automatically deleted by the
server. The DELETE NOTIFICATION command is only used to delete response
notifications that are generated when invitees respond to the client's
invitation. This command is also used to delete "Canceled meeting" notifications
that are sent when a meeting has been cancelled.
Parameters
----------
From: The username of the creator of the notification.
Type: In order for this command to be accepted, the field of the
notification must be set to either 1, 2, 3, 4, or 5. This command
will not be accepted when the notification is of type 0 because it
means the user has not responded to another user's request.
As a reminder, the type of notifications are as follows:
0 = it is a request sent by the creator of the meeting
1 = it is an acceptance sent from an invitee
2 = it is a rejection sent from an invitee
3 = it is a deletion sent by the creator of the meeting
4 = it is a an acceptance but with shortened attendance
(invitee's reponse)
5 = it is a change in room location of the meeting
EventId: This structure has the form Username.Year.Month.Day.Hour.
For example, bill.1998.6.3.2
Description: This is field must contain an exact replica of the data stored in
the corresponding field on the server.
Server Responses
----------------
100 OK Notification deleted.
324 Invalid Type.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
511 Error. No existing meeting event scheduled.
================================================================================
CREATE AUTOMEET
|| ||
[ ... ]
--------------------------------------------------------------------------------
Description
-----------
This function is a cool function in that given a whole set of parameters, it
attempts to find a slot to schedule an appointment for all the usernames. If no
such slot exists, then an error message is returned. This function will not
book any of the meetings nor issue any notifications, it will however, return
the EventId identifying the location of a possible meeting. The CREATE
MEETEVENT command should be used to create the appropriate meeting.
Due to multiple concurrent users, the returned slot may become occupied if the
client does not schedule the meeting quickly after obtaining this answer.
Parameters
----------
Year1: The starting year that the meeting can be booked. (unsigned int)
Month1: The starting month that the meeting can be booked. (unsigned int)
Day1: The starting day that the meeting can be booked. (unsigned int)
Year2: The ending year that the meeting can be booked. A 0 implies there is
no restriction on the ending year. (unsigned int)
Month2: The ending month that the meeting can be booked. A 0 implies there is
no restriction on the ending month. (unsigned int)
Day2: The ending day that the meeting can be booked. A 0 implies there is
no restriction on the ending day. (unsigned int)
T1: The earliest that the meeting can be scheduled from. This parameter
is a 2 digit value. (unsigned integer) A 0 implies no restriction on
the starting time.
T2: The latest that the meeting can be scheduled till. This parameter has
is a 2 digit value. (unsigned integer) A 0 implies no restriction on
the ending time.
Len: The length of the meeting.
Room: The room of the meeting.
NumInRoom: The total number of people who will meet in that room. (max val of
int=999)
Num: The number of other people invited to this meeting (unsigned int)
Username: The username of each person invited to the meeting. (8 char)
Server Responses
----------------
100 OK Slot found at
204 No suitable meeting found.
323 Invalid user names.
501 Error. Please log in first.
502 Error. Please execute PASSWORD command first.
================================================================================
3.0 STATUS CODE LISTING
=======================
100 OKs
200 Active . User is currently logged on.
201 No event exists.
202 No new notifications yet.
203 No users registered yet --- registry empty.
204 No suitable meeting found.
205 Prefs are empty.
300 Invalid Username. Failed attempt #1.
301 Invalid Username. Failed attempt #2.
302 Invalid Username. *** Security alert *** Closing connection.
303 Invalid. already exists! Please choose another username.
304 Invalid. Failed attempt #1.
305 Invalid. Failed attempt #2.
306 Invalid. *** Security alert *** Closing connection.
307 Invalid. Failed attempt. Old password incorrect.
308 Invalid Username.
309 Invalid Password.
310 Username does not exist.
311 Invalid Year.
312 Invalid Month.
313 Invalid Day.
314 Invalid Hour.
315 Invalid FieldVal.
316 Invalid NewVal.
317 Invalid Username in EventId.
318 Invalid Year in EventId.
319 Invalid Month in EventId.
320 Invalid Day in EventId.
321 Invalid Length.
322 Invalid Number of Users.
323 Invalid Usernames.
324 Invalid Type.
325 Invalid Description.
326 Invalid OldEventId.
327 Invalid From.
328 Invalid Year1.
329 Invalid Year2.
330 Invalid Month1.
331 Invalid Month2.
332 Invalid Day1.
333 Invalid Day2.
334 Invalid T1.
335 Invalid T2.
336 Invalid Room.
337 Error. Can not delete root.
338 Error. Invalid room.
339 No rooms defined yet.
340 SORRY NO ROOM FOUND
341 SORRY ROOM DOES NOT EXIST
342 Error, meeting does not exist.
400 Missing argument
401 Missing arguments
402 Missing argument
403 Missing arguments
404 Missing arguments
405 Missing argument
406 Missing arguments
407 Missing arguments
408 Missing arguments
409 Missing arguments
410 Missing arguments ||
411 Missing arguments ||
412 Missing arguments || ||
413 Missing argument
414 Missing arguments
415 Missing arguments
[ ... ]
416 Missing arguments || ||