<[ // WINC - Chat Command // (c) 1997-98 SmartDesk, Inc., All Rights Reserved FUNCTION AddChatRecord( session, filename, name, msg, uid ) local data, x, z, id, rc rc = 1 x = chr( 1 ) // field delimeter z = chr( 2 ) // record delimeter data = date( "YYYYMMDD" ) + x + time( ) + x + name + x + msg + x + uid + z id = "CHATBUF." + filename if ( ! sessionDataAppend( session.websrvr, -1, id, data ) ) sessionDataFlushRecords( session.websrvr, -1, id, filename, z, 0 ) rc = sessionDataAppend( session.websrvr, -1, id, data ) end return( rc ) END // MAIN _apGenerate( ) websrvr = 0 + param( 1 ) sessionId = 0 + param( 2 ) session = new( "session", websrvr, sessionId ) channel = 0 + session.var( "channel" ) if ( channel < 1 ) channel = 1 end filename = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".dat" ) cmd = session.var( "cmd" ) id = session.var( "id" ) alias = session.var( "alias" ) qstr = "?id=" + webEncodeUrl( id ) + "&alias=" + webEncodeUrl( alias ) switch ( cmd ) case "logon" if ( session.data( "winc_islogged" ) != "1" ) AddChatRecord( session, filename, "ADMIN", "Welcome " + alias + " (" + session.data( "winc_name" ) + ") to the conversation.", id ) session.data( "winc_islogged", "1" ) end session.data( "winc_cmd", "" ) break case "logoff" // AddChatRecord( session, filename, "ADMIN", "" + alias + " (" + session.data( "winc_name" ) + ") has left the conversation." ) session.data( "winc_islogged", "0" ) // session.response( "HTTP/1.0 302 Redirect\r\nDate: " + webGMT( ) + "\r\nServer: SmartDesk Personal Web Server v1.0\r\nLocation: /chat/dir.htm\r\n\r\n" ) session.redir( "dir.htm" + qstr ) return( 1 ) case "chat" msg = session.var( "msg" ) if ( ! strempty( msg ) ) AddChatRecord( session, filename, alias, msg, id ) end break case "image" desc = session.var( "image" ) if ( ( ! strempty( desc ) ) && ( left( desc + " ", 4 ) != "----" ) ) file = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".cfg" ) channelData = new( "iniFile", file ) if ( type( channelData ) == "O" ) data = channelData.getItems( "Images" ) cnt = chrcount( ";", data ) + 1 for ( i=1; i<=cnt; i++ ) item = strextract( data, ";", i ) if ( strempty( item ) ) continue end line = channelData.getString( "Images", item ) if ( desc == strextract( line, "|", 1 ) ) // AddChatRecord( session, filename, alias, "" ) AddChatRecord( session, filename, alias, "" + strextract( line, "|", 1 ) + "", id ) end end end end session.data( "winc_cmd", "" ) break case "link" desc = session.var( "link" ) if ( ( ! strempty( desc ) ) && ( left( desc + " ", 4 ) != "----" ) ) file = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".cfg" ) channelData = new( "iniFile", file ) if ( type( channelData ) == "O" ) data = channelData.getItems( "Links" ) cnt = chrcount( ";", data ) + 1 for ( i=1; i<=cnt; i++ ) item = strextract( data, ";", i ) if ( strempty( item ) ) continue end line = channelData.getString( "Links", item ) if ( desc == strextract( line, "|", 1 ) ) AddChatRecord( session, filename, alias, "" + desc + "", id ) end end end end session.data( "winc_cmd", "" ) break case "sound" desc = session.var( "sound" ) if ( ( ! strempty( desc ) ) && ( left( desc + " ", 4 ) != "----" ) ) file = fileFixPath( webServerHome( websrvr ) + "\\chat\\chan" + channel + ".cfg" ) channelData = new( "iniFile", file ) if ( type( channelData ) == "O" ) data = channelData.getItems( "Sounds" ) cnt = chrcount( ";", data ) + 1 for ( i=1; i<=cnt; i++ ) item = strextract( data, ";", i ) if ( strempty( item ) ) continue end line = channelData.getString( "Sounds", item ) if ( desc == strextract( line, "|", 1 ) ) AddChatRecord( session, filename, alias, "<<< " + desc + " >>>", id ) end end end end session.data( "winc_cmd", "" ) break case "transcript" if ( sessionDataGet( websrvr, -1, "IsInTranscript" ) == "1" ) break end sessionDataGet( websrvr, -1, "IsInTranscript", "1" ) if ( fileExists( filename ) ) ferase( filename ) end hfile = fileCreate( filename ) if ( hfile < 1 ) break end data = sessionDataGet( websrvr, -1, "CHATBUF." + filename ) data = chrswap( data, chr( 1 ), "," ) data = strswap( data, chr( 2 ), "\r\n" ) fwrite( hfile, data, len( data ) ) fclose( hfile ) webServerSendFile( websrvr, hsock, filename ) sessionDataGet( websrvr, -1, "IsInTranscript", 0 ) session.data( "winc_cmd", "" ) session.redir( "/chat/chan" + channel + ".dat" ) return( 1 ) break case "preferences" session.data( "winc_reload_time", session.var( "freq" ) ) session.data( "winc_pglen", session.var( "pglen" ) ) session.data( "winc_cmd", "" ) break case "comment" str = session.var( "comment" ) str2 = "" if ( left( str + " ", 4 ) != "----" ) str2 = str end data = fileReadASCII( webServerHome( session.websrvr ) + "\\chat\\users\\" + id + ".dat" ) name = strextract( data, "|", 3 ) email = strextract( data, "|", 5 ) str = session.var( "action" ) if ( left( str + " ", 4 ) != "----" ) switch ( upper( str ) ) case "USER NAME" str = name break case "ALIAS" str = alias break case "EMAIL ADDRESS" str = email str = "" + str + "" break case "TIME STAMP" str = cdow( jdate( ) ) + date( ", MMMM DDDD, YYYY at " ) + timetostr( time( ), 0 ) + "m" break case "DATE" str = cdow( jdate( ) ) + date( ", MMMM DDDD, YYYY at " ) break case "TIME" str = timetostr( time( ), 0 ) + "m" break end if ( ! strempty( str2 ) ) str2 += " " + str else str2 = str end end str = session.var( "icon" ) if ( left( str + " ", 4 ) != "- Em" ) // emoticons if ( ! strempty( str2 ) ) str2 += " " + str else str2 = str end end if ( ! strempty( str2 ) ) AddChatRecord( session, filename, alias, str2, id ) end session.data( "winc_cmd", "" ) break end session.redir( "sdchat.htm?cmd=ChatText&id=" + id + "&channel=" + channel + "&alias=" + webEncodeUrl( alias ) ) return( 1 ) ]>