Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import strutils
- import strformat
- import commandeer
- import db_common
- import db_mysql
- # changelog
- # 0.4 support for webhook
- # 0.3 modified output
- # 0.2 working version"
- # 0.1 time starts flowing
- # Defaults
- let version="0.4"
- let myname="check_calllog"
- let default_minutes = 10
- let default_database = "asteriskcdrdb"
- let default_hostname = "localhost"
- # Parse user Options
- commandline:
- option show_version, bool, "version", "V"
- option verbose, bool, "verbose", "v"
- option user_time, int, "time", "t"
- option number, int, "number", "n"
- option user_database, string, "database", "d"
- option username, string, "username", "u"
- option password, string, "password", "p"
- option hostname, string, "hostname", "H"
- option webhook, string, "webhook", "w"
- exitoption "help", "h",
- fmt"""Usage: {myname}
- -t|--time check the last n mintues, default is {default_minutes}
- -n|--number check for this number
- -d|--database check this database, default is {default_database}
- -u|--usernam usename for database access
- -p|--password password for database access
- -H|--hostname hostname of database, default is {default_hostname}
- -w|--webhook URL of webservice to POST information
- -V|--version show version and exit
- -h|--help show this help and exit
- -v|--verbose be verbose
- Check FreePBX call log for a number
- """
- # Parse user input
- # if user asks for version, show and exit
- if show_version:
- echo fmt"{myname} version {version}"
- quit 0
- # Set default if user did not give us grace_period
- if user_time == 0:
- user_time = default_minutes
- # See if we need to use a different database
- if user_database == "":
- user_database = default_database
- # See if we need to use a different host
- if hostname == "":
- hostname = default_hostname
- # Sanity checks
- if username == "":
- echo "need username"
- quit 3
- if number == 0:
- echo "need number"
- quit 3
- # Inform user if verbose
- if verbose:
- echo fmt"check the last {user_time} minutes"
- echo fmt"username {username}"
- echo fmt"databse {user_database}"
- echo fmt"number {number}"
- # Functions
- # Main function
- proc main(verbose: bool, username: string, user_time:int, user_database:string, password:string, hostname:string, number:int): int =
- var db: DbConn
- var query: SqlQuery
- var caller: seq[string]
- # make string from number, add mysql wildcard
- var query_number = fmt"%{number}"
- result = 0
- try:
- db = open(hostname, username, password, user_database)
- except DbError:
- echo fmt"Could not connect to database {user_database} on host {hostname} with user {username}"
- return 3
- # construct the mysql query
- query = sql"select src,calldate from cdr where dst like ? and calldate >= NOW() - INTERVAL ? MINUTE order by calldate desc"
- # ask the database
- for row in db.rows(query, query_number, user_time):
- if row[0] in caller: continue
- result = 2
- caller.add(row[0])
- echo fmt"{row[0]} at {row[1]}"
- if result == 0:
- echo fmt"No calls for {number}"
- # End of Main
- # Call main
- quit main(verbose, username, user_time, user_database, password, hostname, number)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement