Jump to content

Fingertool Search Text Tool - Enemy Territory Software


PiNoY

Recommended Posts

Well this is no different from when you find yourself buying your own favorite pizza than somebody else buys your favorite pizza for you and enjoy that together :) the answer lies between the lines I guess.

 

Ok, one for example, in due time one can simply embed FA Google Ads on that GUI so that every time gamers use the software, it adds a little number to ads served by FA Google ID. Maybe another example is that, the more end users of software made by FA becomes popular, the more impact and attraction it creates to gaming community and for them to come visit FA website then possibly join FA gaming community. Also the fingertool doesnt require initial windows-indexing mechanism for faster search not like windows explorer.

 

It's a bit idealistic and technical but bottom line is re-inventing the wheel sometimes has its own fair revolutionized custom benefits to some if not the most. :)

 

 

EDIT: just wanted to say that the latest version at my end can now do multiple and parallel search at a time unlike windows-explorer

 

Just so you know mate, I don't think AdSense allow embedding of their ads within desktop applications.. But maybe I'm wrong. Other adservers do though ^_^ But IMO even the link to F|A is enough to make me support this software :P

Edited by Chuckun
  • Like 1
Link to comment
Share on other sites

  • Administrators

New file approved. Sorry for delay.

 

Suggestion: Can you make something like:

 

It searches all condumps file. Then get the info of all !fingers or !baninfo commands from those condumps and dump in one single file.

 

This way next time when I have to search all I need to check is one file rather then going through 200 files... well i had more then 200 files few years back... and it was always time consuming to consolidate to one file... if your software can do that it would be much useful.

 

Searching through one file is always easier then searching through 200 files when u have old hard drives on laptop dating from 2006 or are using IDE hard drives and on top i hate to keep 200 files where in all those files only useful info is of few lines...

  • Like 4
Link to comment
Share on other sites

Also the fingertool doesnt require initial windows-indexing mechanism for faster search not like windows explorer.

 

That on the other hand means that Windows Explorer's search is much faster due to its indexing.

 

EDIT: just wanted to say that the latest version at my end can now do multiple and parallel search at a time unlike windows-explorer

 

screen-shot-2012-10-18-at-21-11-58.png

  • Like 1
Link to comment
Share on other sites

Just so you know mate, I don't think AdSense allow embedding of their ads within desktop applications.. But maybe I'm wrong. Other adservers do though ^_^ But IMO even the link to F|A is enough to make me support this software :P

Yes maybe that Adsense inside desktop app is against Google TOS,

 

That on the other hand means that Windows Explorer's search is much faster due to its indexing.

Yes I think so specially once indexing already exists.

capturesf.jpg

 

 

Suggestion: Can you make something like:

It searches all condumps file. Then get the info of all !fingers or !baninfo commands from those condumps and dump in one single file.

 

Yes doable, its not much..but here - http://www.mediafire...na0nvy4a8xhgev7

It's under "Search and Merge" tab page of the application.

 

 

Works fast on my little collection (in my jaymod main folder).

 

Suggestions:

 

1. enable opening text files from the found window, using the Windows file associations.

 

2. needs a mechanism to remember where it was last used, so we don't have to navigate from c:\program files to our et/jay or nq, etc. Maybe it's default start location can be changeable, or it can display a folder-history list.

 

3. change the 'choose folder' so that clicking in the box will highlight the default address and one can paste in a whole other addy, which overwites the default, something like Windows folders do.

 

4. allow pressing enter after typing in the search term to start search, instead of only using the search button.

 

Notes:

1. I found that if you have a copy of the program in the folder where you have your finger-files, you can just copy the current folder address from the windows address bar (if you're set up that way), highlight "c:\programs" in the Fingertool "Choose folder" box and paste in the current address. You don't need to press the "choose folder" button to enable searching in the just-pasted address. (If you do press the 'choose' key after pasting in an address, it will display a folder structure starting in "c:/program files", as if nothing had been pasted into the entry box. But, the addy you just pasted in will not be overwritten if you choose to cancel the 'choose folder'.)

 

2. I found that entering a new search term and pressing 'search' will clear the prior 'found list' without having to press the 'clear list' button.

 

3. I thought it was working so quickly because it was just searching text-files only, but when I searched for "Ludicrous" it returned 7 files, one of which was a *.dll and the rest were *.pk3 files! So, it does search all files, which makes its speed more impressive.

My jaymod folder has 271 files, comprising 62.6 MB

 

This is going to do the job. Prior to using this program, I had really only searched in recent files for info, or using the names I had given the files!

 

BTW, my very first search term was 'pinoy' and six files were found. I just ran the same term again and found that 5 finger-files and one *.exe file were returned. Fingertool.exe had found 'pinoy' in itself!

 

=============== I found 'Pinoy' in the program and the very nice 'properties/details' of the file ============

 

1)$3ee57bb3-bfdd-4012-9866-8d21291832d8Copyright © 2012SNW:ET Finger Search Tool v0.1 by =F|A=Pinoy - www.http://fearless-assassins.com>9Search your collection of W:ET finger for specific string(#W:ET Finger Tool v0.1 by =F|A=Pinoy

 

Yes, have included some of your requests also tnx - http://www.mediafire...na0nvy4a8xhgev7

Edited by PiNoY
  • Like 1
Link to comment
Share on other sites

  • Administrators

May be update the new release on our forums? Lately, I am using mediafire less cos of their freaking trojan adds...

 

The reason files are not auto approves in our download section because mostly i check all files through online virus scan and make sure it doesn't have any trojan or virus in it. Normally, I am not required to do so but we always take measures before some reports it.

  • Like 3
Link to comment
Share on other sites

Release on forum updated to version 1.3. Thanks DD

 

Just wanted to say to anyone who might be reading this topic that I dont have much choice but to use commercial Kaspersky to scan the newly compiled binary for viruses. However, I am pleased to mention that I would not be responsible at any rate for any harm nor damage to anyone's PC or data that the software could or might cause at all levels.

 

There is no warranty or guarantee that the software will work for everyone or anyone. And that the software is not designed to replace any existing software or method anyone is currently using of. There is no even implied warranty or guarantee that the software is working correctly or perfectly.

 

I'm using the software at my end, that is my decision. So to those who might be interested to download the tool, thank you but USE AT YOUR OWN RISK :)

  • Like 1
Link to comment
Share on other sites

  • Clan Friend

I haven't tried it yet, normally I use grep to do such things.

If I had to write my own, I would do this (maybe some ideas for you :P):

 


Reading and parsing !fingers directly from etconsole.log in real time, and appending them to a single txt file automatically, without condumps. (Possibly without duplicates)

 

If you use /logfile 2 it should write all console output to etconsole.log in realtime, so you can open etconsole.log and monitor it in realtime (like for example a tail -f in linux), parse it, and when you find a !finger output you append it to some text file.

 

Reading directly from et console buffer would be too much hackish, etconsole.log has a slight delay maybe, but it's safe and portable to different os

 

As an alternative, you could monitor a file with a specific name for changes, e.g. output.txt, then make a bind with /condump output.txt and use it manually after every !finger, to trigger a response from your monitor running in background.

 


Once you detect a new finger, you make automatically a search, and you could output it to ET in a couple of ways:

 

1 - (cleanest way possible) Creating a dynamic .cfg file with echo commands.

For example, when I didn't play in windowed mode, my conky config had a lua script for dynamically creating a .cfg file with some echo commands, telling me the cause of a temperature alarm, so I could just /exec conky.cfg and I saw the data with all temperatures in my ET console without leaving ET.

 

2 - the way dynamite counters do, it's maybe a bit hack-ish, but I doubt it could be taken as a hack, since it's a normal windows call (use at your own risk, though!).

 

Example in C:

take et console window handle

HWND et_console = FindWindowEx(FindWindow(0, "ET Console"), NULL, "Edit", 0);

write something

SendMessage(et_console, WM_SETTEXT, 0, "echo blablabla");
SendMessage(et_console, WM_CHAR, 13, 0); // 13 = like pressing Enter

  • Like 2
Link to comment
Share on other sites

  • Clan Friend

Suggestion: Can you make something like:

 

It searches all condumps file. Then get the info of all !fingers or !baninfo commands from those condumps and dump in one single file.

I had made something like this already some time ago, now I polished it a bit and added some infos to make it more 'user firendly', there you are:

 

 

 

#!/usr/bin/env python
#
# !finger and !baninfo merger by SunLight - V1.0
#
# Parses several text files for !finger and !baninfo
# all the output (without color codes) is merged, sorted,
# and sent to a file (or stdout).
#  
# You can add support for several mods yourself (see below).
#  
# usage: merge_info.py -o [OUTPUTFILE | -] [FILE...]
#
# -o - will output to stdout.
#  
# examples:
# reads all .txt and .log, and outputs to output.txt
# merge_info.py -o output.txt *.txt *.log
#  
# reads 2 files, outputs to stdout, then pipe to less
# merge_info.py -o - other.log ~/.etwolf/jaymod/etconsole.log | less
#  
# you can have the same file both as input and output, it will be
# filtered and sorted
# merge_info.py -o output.txt output.txt
#  

import os
import sys
import glob
import re
import operator

# EDITABLE PART
# Edit this for other mod support.
#
# The first element is an arbitrary label, then you have the line
# used for sorting, then all the other (consecutive!) lines.
#
# Note: elements starting with ! are used for the 'key'
#  
# If you don't put a ! before a line, that line won't be taken into
# account when it comes to duplicate checking...
# NOTE:
# You need at least 1 line starting with !

mod_patterns = [
['-Jaymod ban', # arbitrary label
'name:', # you will use this line for the global sort.

'-BAN INFORMATION', # these are all the line headers, in order.
'!ID:', # this line starts with ! so it is considered relevant for
'!name:', # duplicate checking
'!level:',
'!GUID:',
'!IP:',
'!MAC:',
'!when:',
'!expiry:',
'!authority:',
'!reason:'
],  

['-Jaymod finger',
'name:', # we sort by name

'-PLAYER INFORMATION',
'slot:', # no ! at the beginning, if you finger a player again, and it
'team:', # has a different slot or team, it will be considered a duplicate
'name changes:',
'-USER INFORMATION',
'!name:', # name, guid, ip and mac are marked with !
'level:',
'!GUID:',
'!IP:',
'!MAC:',
'timestamp:'
],

['-Noquarter finger',
'Information about', # we sort by name

'!Information about',
'Slot:',
'Admin:',
'!GUID:',
'!IP:'
],

['-Silent finger',
'Player Name:', # we sort by name

'!Player Name:',
'Slot Number:',
'Admin Level:',
'!silEnT GUID:',
'!PB GUID:',
'!IP:',
'Client Version:',
'Client OS:',
'Client Ident:'
]

]

# END EDITABLE PART

#-----------------------------------------------------------------------
# de-colorizes a Quake string
color_pattern = re.compile('\^[^\^]')
def DeColorize(text):
   return color_pattern.sub('', text)

#-----------------------------------------------------------------------
# this is to build all the regular expressions from the editable part
mod_regex = []

def CreatePatterns():
   for elements in mod_patterns:
    pattern = r'^'
    for el in elements[2:]:
	    pattern += r'%s.*[\r\n]' % re.escape(el.strip('!'))

    sort_pattern = r'^%s(.*)[\r\n]' % elements[1]

    key_pattern = r''# r'^'
    for el in elements[2:]:
	    if el.startswith('!'):
		    key_pattern += r'.*%s.*[\r\n]' % re.escape(el.strip('!'))

    mod_regex.append([elements[0], # label
	    re.compile(sort_pattern, re.MULTILINE), # sort regex
	    re.compile(key_pattern, re.DOTALL), # key regex
	    re.compile(pattern, re.MULTILINE) ]) # full entry


#-----------------------------------------------------------------------
# reads a file and merges it in the global dictionary
entries = {}

skip_notify = re.compile(r'^\[skipnotify\]')

def MergeFile(filename):
   text=''

   f = open(filename, 'r')
   for line in f:
    line = skip_notify.sub('',line) # removes skipnotify
    text+=DeColorize(line.rstrip('\r\n'))+'\n'
   f.close()

   # tries all regex patterns
   for regex in mod_regex:
    all = regex[3].findall(text)
    for element in all:
	    sort = regex[1].search(element).group(1)

	    key = regex[2].findall(element)
	    if key:
		    entries[regex[0]+key[0]] = [regex[0], sort, element]
	    else:
		    entries[regex[0]+element] = [regex[0], sort, element]


#-----------------------------------------------------------------------
def ShowUsage():
   print >> sys.stderr, '!Finger Info merger by SunLight'
   print >> sys.stderr, 'Usage:'
   print >> sys.stderr, '%s -o [OUTPUTFILE | -] [FILE...]' % sys.argv[0]
   sys.exit(1)

if len(sys.argv) < 4:
   ShowUsage()
if sys.argv[1] != '-o':
   ShowUsage()


out_stdout = False
if sys.argv[2] == '-':
   print >> sys.stderr, 'Writing to stdout.'
   out_stdout = True
elif os.path.isfile(sys.argv[2]):
   answer = raw_input('File:%s exists. Overwrite? (y/n) : ' % sys.argv[2])
   if not answer in 'yY':
    exit(1)

#-----------------------------------------------------------------------
CreatePatterns()
for filename in sys.argv[3:]:
   filenames = glob.glob(filename)

   for file in filenames:
    print >> sys.stderr, "Parsing %s..." % file
    MergeFile(file)

#-----------------------------------------------------------------------
# sort and write
if len(entries) > 0:
   total_list = entries.values()
   total_list.sort(key=operator.itemgetter(1))

   if out_stdout:
    f = sys.stdout
   else:
    f = open(sys.argv[2], 'w')

   for element in total_list:
    print >> f, "-----------------------------"
    print >> f, element[0].rstrip('\r\n')
    print >> f, element[2].rstrip('\r\n')

   if not out_stdout:
    f.close()

print >> sys.stderr, "Found %d unique entries." % len(entries)

 

 

it's a python script, but if you use Linux you should have python already installed.

 

Since I usually play jaymod, maybe it needs some editing for Silent mod and Noquarter patterns, but as you can see there is an editable part at the top.

 

Maybe I could turn it into a windows exe with py2exe but most people like things with a gui, not command line tools...

I'm noob with python but I used it myself and it works... :P

 

enjoy

 

edit:

hmm it seems all the indentation is gone, so the script won't work... maybe I have to attach it as zip somewhere, I replaced tabs with spaces now...

Edited by SunLight
  • Like 1
Link to comment
Share on other sites

If I had to write my own, I would do this (maybe some ideas for you :P):

 


Reading and parsing !fingers directly from etconsole.log in real time, and appending them to a single txt file automatically, without condumps. (Possibly without duplicates)

 

If you use /logfile 2 it should write all console output to etconsole.log in realtime, so you can open etconsole.log and monitor it in realtime (like for example a tail -f in linux), parse it, and when you find a !finger output you append it to some text file.

 

Reading directly from et console buffer would be too much hackish, etconsole.log has a slight delay maybe, but it's safe and portable to different os

 

As an alternative, you could monitor a file with a specific name for changes, e.g. output.txt, then make a bind with /condump output.txt and use it manually after every !finger, to trigger a response from your monitor running in background.

 


Once you detect a new finger, you make automatically a search, and you could output it to ET in a couple of ways:

 

1 - (cleanest way possible) Creating a dynamic .cfg file with echo commands.

For example, when I didn't play in windowed mode, my conky config had a lua script for dynamically creating a .cfg file with some echo commands, telling me the cause of a temperature alarm, so I could just /exec conky.cfg and I saw the data with all temperatures in my ET console without leaving ET.

 

2 - the way dynamite counters do, it's maybe a bit hack-ish, but I doubt it could be taken as a hack, since it's a normal windows call (use at your own risk, though!).

 

 

Thanks for the ideas Sunlight, basically the above requests has been done. Latest version can now capture data inside ET console and react from those commands. Like if an admin issued !finger and !baninfo commands, fingertool saves those !finger information and !baninfo automatically into a single file without using condump. The tool can search TXT files while inside ET console. Supported ET console commands

 

!finger

!baninfo

/searchIP or !searchip

/searchMAC or !searchMAC

/searchGUID or !searchGUID

/usage or !usage

 

Enjoy

 

EDIT: On J3, use /searchIP instead of !searchIP so not to be muted :P The output file could include duplicates though, havent done that yet since every data append doesnt check duplicate records yet, maybe if time permits.

Edited by PiNoY
  • Like 1
Link to comment
Share on other sites

for those who wanted to know, have added some features (not uploaded yet)

 

few last update of my current fingertool version

 

- automatic !finger of new players joining any team (axis or allies) and automatic saving finger info

- automatic detection of invalid MAC and invalid IPs with auto alert on console screen

 

to do list if time permits

- automatic checking of IP (first 2) and MAC against forum's ban reports (requires forum's login credential though and I think this would be a security issue also)

- removal of duplicates inside output file ( I dont have an idea yet since fingertool output file is being written on real time)

- feature to submit (upload) fingertool text file to a master copy somewhere on the web so it can be a centralized copy (but I think this is a security issue again)

 

current feature which Im thinking to remove yet

- doing !list will automatically !finger all players on the server automatically and save them

- automatic !finger of all players every 15 minutes and save them (this one contradicts the first auto-finger for every player that joins any team)

 

anyway, dont know it will be useful since ET is an old game. I wonder how punk buster works but that's another story. have a nice evening then.

 

cheers

Link to comment
Share on other sites

  • 6 months later...
  • Leader

edit:

hmm it seems all the indentation is gone, so the script won't work... maybe I have to attach it as zip somewhere, I replaced tabs with spaces now...

I just copy&pasted the lines in your spoiler into Notepad(!) and the python spaces were retained!

 

When I pasted into Wordpad, all spaces and end-of-lines were lost, like below:

 

#!/usr/bin/env python # # !finger and !baninfo merger by SunLight - V1.0 # # Parses several text files for !finger and !baninfo # all the output (without color codes) is merged, sorted, # and sent to a file (or

 

...which seems odd, as I /condump *.rtf because notepad loses the ET-endof-lines.

 

 

 

Link to comment
Share on other sites

  • Clan Friend

I just copy&pasted the lines in your spoiler into Notepad(!) and the python spaces were retained!

 

When I pasted into Wordpad, all spaces and end-of-lines were lost, like below:

 

#!/usr/bin/env python # # !finger and !baninfo merger by SunLight - V1.0 # # Parses several text files for !finger and !baninfo # all the output (without color codes) is merged, sorted, # and sent to a file (or

 

...which seems odd, as I /condump *.rtf because notepad loses the ET-endof-lines.

I see spaces there... maybe it depends on the format in the clipboard, if it's being pasted as plain text or something else.

 

Anyway I had already 'fixed' it back then by replacing tabs with spaces. I generally hate code indented with spaces instead of tabs, but I had to make an exception :P

 

p.s.

The reason why notepad loses the end-of-line in ET files, is because ET uses the Unix format and not the Windows format.

On Windows you have CR+LF (carriage return + line feed), on Unix (Linux, Mac OS, etc.) end of line in text files is just LF

  • Like 1
Link to comment
Share on other sites

  • Administrators

Someone reported file as broken cos when u download it's version 1.3.

 

Pinoy can u please check?

Link to comment
Share on other sites

  • Clan Friend

Someone reported file as broken cos when u download it's version 1.3.

 

Pinoy can u please check?

Inside the file I read 1.3

 

by the way, sorry for OT, but the update button for files is gone? what's the correct procedure to upload a new version of something?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.