Added README and removed unwanted files
This commit is contained in:
parent
62cb52cdda
commit
7197915d69
@ -1,7 +0,0 @@
|
||||
import json
|
||||
with open('AppData.json',encoding='utf-8') as F:
|
||||
json_data=json.loads(F.read())
|
||||
|
||||
for app in json_data["Dapps"]:
|
||||
print(app["name"])
|
||||
|
||||
17
README.md
Executable file
17
README.md
Executable file
@ -0,0 +1,17 @@
|
||||
# FLO-AppStore
|
||||
This app lets to download, execute and manage other FLO apps
|
||||
|
||||
## Requirements
|
||||
1. linux operating system(working on a cross platform version).
|
||||
|
||||
## Usage
|
||||
1. Clone/download this repository. (https://github.com/sairajzero/FLO-appStore/)
|
||||
2. Run the binary file (FLO_appStore)
|
||||
./FLO_appStore
|
||||
|
||||
## Other Infos
|
||||
|
||||
1. Source code of the AppStore is main.py
|
||||
2. Apps are downloaded in the apps directory
|
||||
3. Icons for the apps are stored in icon directory
|
||||
**Do not remove the directories and/or files mannually**
|
||||
@ -1,4 +0,0 @@
|
||||
aterna love messaging platform
|
||||
|
||||
run ./auto-aterna-love.sh on your server to look for new messages
|
||||
aterna-love.php parses and stores messages to database to display on front-end
|
||||
@ -1,125 +0,0 @@
|
||||
#!/usr/bin/php
|
||||
<?
|
||||
// metacoin 2014
|
||||
|
||||
// floexplorer.php
|
||||
// run this file in a cron or the provided shell script (or your own method) to constantly update the database
|
||||
DEFINE('SECURITY', 1);
|
||||
require ('florincoin-explorer/class/florin_rpc.php');
|
||||
require ('include2/db.inc.php');
|
||||
|
||||
$r = new florin_RPC_client('florincoin-explorer/setup/setup.php', 1);
|
||||
|
||||
$setup = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$block_parser_dbinfo = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$lovedbh = get_dbh($setup);
|
||||
$block_parser = get_dbh($block_parser_dbinfo);
|
||||
|
||||
|
||||
$ADDRESS = 'F7To9UR9qvnj8QDQ1EPxtSzfSogREmn7HC';
|
||||
$ACCOUNT = '';
|
||||
$CONFIRMS = 0;
|
||||
//$florin_rpc = new florin_RPC_client('setup/setup.php', 1);
|
||||
//$block_parser = new block_parser($florin_rpc, 'setup/setup.php', isset($options['debug']), $options['a']);
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
/* BEGIN */
|
||||
|
||||
check_new_email_user($lovedbh);
|
||||
check_if_we_sent_email();
|
||||
check_user_validation($lovedbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS);
|
||||
check_block_confirms($lovedbh, $r, $block_parser);
|
||||
check_transaction_age();
|
||||
|
||||
/* END */
|
||||
|
||||
$endTime = microtime(true);
|
||||
$elapsed = $endTime - $startTime;
|
||||
//echo "%%%%% Execution time : $elapsed seconds %%%%%\r\n\r\n";
|
||||
|
||||
function check_new_email_user($dbh) {
|
||||
// checks to see if there is a new email submission, in which case a mail is sent out to that user with the token
|
||||
// this function also checks if any users exist with mailsent = 0, which is the flag to re-send an email
|
||||
$q = $dbh->query("select id, token from love where verified = 0 and done = 0 and mailsent = 0 and confirmed = 0");
|
||||
$r = $q->fetchAll(PDO::FETCH_NUM);
|
||||
if (!$r) {}
|
||||
else {
|
||||
foreach ($r as $thing) {
|
||||
echo "!! found a new user who has filled in the form: " . $thing[0] . ") " . $thing[1] . "\n";
|
||||
echo "~~ update love set verified = 1 where id = " . $thing[0] . "\n";
|
||||
$q = $dbh->query("update love set verified = 1 where id = " . $thing[0]);
|
||||
echo "~~ insert into tx (loveid) values (" . $thing[0] . ")\n";
|
||||
$q = $dbh->query("insert into tx (loveid) values (" . $thing[0] . ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function check_if_we_sent_email() {
|
||||
// check our mail API to see if we actually sent an email out or not. resend if we didn't
|
||||
}
|
||||
|
||||
function check_user_validation($dbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS) {
|
||||
|
||||
// find a list of userinfo for users who aren't "done" with this process (They have not been given a txid yet)
|
||||
$q = $dbh->query("select tx.txid, B.id, B.email, B.remail, B.name, B.rname, B.message from tx join (select id, email, remail, name, rname, message from love where verified = 1 and done = 0) as B where B.id = tx.loveid and tx.txid is null");
|
||||
$z = $q->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($z as $userinfo) {
|
||||
$txcomment = "t1:ALOVE>" . $userinfo[6] . "|" . $userinfo[5] . "|" . $userinfo[4];
|
||||
echo "~~~~~ found a new user who has verified their email: " . $userinfo[1] . ") " . $userinfo[2] . "->" . $userinfo[3] . " " . $txcomment . "\n";
|
||||
$txid = check_available_transaction($r, $ACCOUNT, $ADDRESS, $CONFIRMS);
|
||||
if (!$txid) {exit("***** FATAL ERROR: No transaction available to write to blockchain.\n");}
|
||||
|
||||
$newtxid = write_transaction_with_message($txid, $txcomment, $r, $ADDRESS);
|
||||
if (!$newtxid) {exit("***** FATAL ERROR: couldn't write transaction to blockchain. $txid.\n");}
|
||||
|
||||
if (!$dbh->query("update love set done = 1, txid = '$newtxid' where id = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
if (!$dbh->query("update tx set txid = '$newtxid' where loveid = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update tx txid = $txid\n");}
|
||||
|
||||
/*
|
||||
$q2 = $dbh->prepare("update love set txcomment = ? where id = " . ((int)$userinfo[1]));
|
||||
$q2->bindValue(1, $txcomment, strlen($txcomment), PDO::PARAM_STR);
|
||||
if ($q2->execute()) {}
|
||||
else exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
// find all transactions where users have validated their email but haven't been given a txid yet
|
||||
//$q = ("select txid from tx join (select id from love where verified = 1 and done = 0) as B where B.id = tx.loveid");
|
||||
}
|
||||
|
||||
|
||||
function check_transaction_age() {
|
||||
// checks transaction age to see when the transaction request was created. if it's older than a certain age, we must create the transaction again
|
||||
// *** ONLY IF IT ISN'T IN THE MEMPOOL
|
||||
}
|
||||
|
||||
|
||||
function check_block_confirms($ldbh, $r, $dbh) {
|
||||
//
|
||||
$q = $ldbh->query("select txid, id from love where confirmed = 0 and verified = 1");
|
||||
if ($q) { $z = $q->fetchAll(PDO::FETCH_NUM); }
|
||||
foreach ($z as $userinfo) {
|
||||
$confirmed = check_tx_confirms_rpc($dbh, $r, $userinfo[0]);
|
||||
if ($confirmed) {
|
||||
$ldbh->query("update love set confirmed = 1 where id = " . (int)$userinfo[1]);
|
||||
echo "~~ " . $userinfo[0] . " is now confirmed with 5 confirms.\n";
|
||||
}
|
||||
}
|
||||
|
||||
$q2 = $ldbh->query("select id, email, txid, email, remail, name, rname, message from love where confirmed = 1 and verified = 1 and done = 1");
|
||||
if ($q2) {
|
||||
$z2 = $q2->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($z2 as $userinfo2) {
|
||||
//echo $userinfo2[0] . " (" . $userinfo2[2] . ") confirmed and email is ready to be sent\n";
|
||||
send_final_email($userinfo2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
@ -1,7 +0,0 @@
|
||||
#!/bin/sh
|
||||
echo "_____ Aterna Love v1.0 - metacoin 2014\r\n - Aterna, Inc."
|
||||
while [ true ]
|
||||
do
|
||||
php aterna-love.php 2>&1 | tee -a outfile
|
||||
sleep 5
|
||||
done
|
||||
@ -1,25 +0,0 @@
|
||||
0.24 {
|
||||
added create table statements to README
|
||||
TODO: add a transaction vout/vin table
|
||||
}
|
||||
|
||||
0.25 {
|
||||
moved $rpc_setup to setup.php
|
||||
added block_exporer api
|
||||
added filter to block explorer
|
||||
}
|
||||
|
||||
0.255 {
|
||||
added transaction vout, transaction vin, and vout_address tables to database
|
||||
raw transaction data is now displayed in a huamn readable manner in the block explorer web page
|
||||
reorganization lookback call added to blockchain_cron
|
||||
TODO: make vout_address.vout_id unique (currently there are duplicate entries created during reorg detection/handling)
|
||||
TODO: add check for tx_db_id, n value to be unique (duplicate entry created during reorg detection/handling)
|
||||
}
|
||||
|
||||
0.27 {
|
||||
added txmp
|
||||
added fees to tx page
|
||||
optimized table datatypes (still needs work)
|
||||
TODO: optimize table datatypes more!
|
||||
}
|
||||
@ -1,7 +0,0 @@
|
||||
Aterna, Inc. block explorer with txmp [transaction message protocol] 0.28
|
||||
by metacoin 2013-12-29
|
||||
|
||||
Originally designed for Florincoin blockchain
|
||||
http://florincoin.org
|
||||
http://florincoin.info
|
||||
|
||||
Binary file not shown.
@ -1,249 +0,0 @@
|
||||
<?
|
||||
// this file is used to display the block explorer info to the web
|
||||
|
||||
|
||||
// TODO: organize these functions into DB/RPC buckets
|
||||
// make an include file for interface stuff ... prettyprint etc
|
||||
|
||||
class block_explorer {
|
||||
function __construct($setup_file, $r) {
|
||||
require($setup_file);
|
||||
$this->rpc = $r;
|
||||
$this->dbh = $dbh;
|
||||
}
|
||||
|
||||
public function d_print($msg) {
|
||||
if ($_SERVER['REMOTE_ADDR'] == 'myip') { var_dump($msg); }
|
||||
}
|
||||
|
||||
public function getTXFromRPC($hash) {
|
||||
$raw_tx= trim($this->rpc->call('getrawtransaction', $hash, 0, 0));
|
||||
return $this->rpc->call('decoderawtransaction', $raw_tx, 0, 0);
|
||||
}
|
||||
|
||||
public function getBlockFromRPC($hash, $id) {
|
||||
if ($hash) {return $this->rpc->call('getblock', $hash, 0, 0);}
|
||||
return $this->getBlockFromRPC(trim($this->rpc->call('getblockhash', $id, 0, 0)), 0, 0, 0);
|
||||
}
|
||||
|
||||
public function getVinFromRPC($txid) {
|
||||
$rtx = $this->rpc->call('getrawtransaction', $txid, 0, 0);
|
||||
$dtx = $this->rpc->call('decoderawtransaction', $rtx, 0, 0);
|
||||
return $dtx['vin'];
|
||||
}
|
||||
|
||||
public function getAddressFromTxidAndVout($txid, $vout) {
|
||||
$rtx = $this->rpc->call('getrawtransaction', $txid, 0, 0);
|
||||
$dtx = $this->rpc->call('decoderawtransaction', $rtx, 0, 0);
|
||||
return $dtx['vout'][$vout]['scriptPubKey']['addresses'][0];
|
||||
}
|
||||
|
||||
public function getTotalOutputsFromTxByAddress($txid, $address) {
|
||||
$rtx = $this->rpc->call('getrawtransaction', $txid, 0, 0);
|
||||
$dtx = $this->rpc->call('decoderawtransaction', $rtx, 0, 0);
|
||||
$total = 0;
|
||||
foreach ($dtx['vout'] as $vout) {
|
||||
if (in_array($address, $vout['scriptPubKey']['addresses'])) {$total += $vout['value'];}
|
||||
}
|
||||
return $total;
|
||||
}
|
||||
|
||||
public function getBlockByID($block_id) {
|
||||
$r = $this->dbh->prepare("select * from block where id = :block_id and inactive != 1");
|
||||
$r->bindValue(':block_id', $block_id);
|
||||
$r->execute();
|
||||
return $r->fetch();
|
||||
}
|
||||
|
||||
public function getBlockByHash($block_hash) {
|
||||
$r = $this->dbh->prepare('select * from block where hash = ?');
|
||||
$r->bindParam(1, $block_hash, PDO::PARAM_STR, strlen($block_hash));
|
||||
$r->execute();
|
||||
return $r->fetch();
|
||||
}
|
||||
|
||||
public function getTXById($tx_id) {
|
||||
$r = $this->dbh->prepare("select * from tx where id = :tx_id and inactive != 1");
|
||||
$r->bindValue(':tx_id', $tx_id);
|
||||
$r->execute();
|
||||
return $r->fetch();
|
||||
}
|
||||
|
||||
public function getTxByHash($tx_hash) {
|
||||
$r = $this->dbh->prepare('select * from tx where hash = ? and inactive != 1');
|
||||
$r->bindValue(1, $tx_hash, PDO::PARAM_STR);
|
||||
$r->execute();
|
||||
return($r->fetch());
|
||||
}
|
||||
|
||||
public function getRecentBlocks($num_blocks) {
|
||||
$r = $this->dbh->query("select value from control where name = 'lastblock'");
|
||||
$v = $r->fetch();
|
||||
for ($i = 0; $i < $num_blocks; $i++) {
|
||||
$blocks[] = $this->getBlockById($v[0] - $i);
|
||||
}
|
||||
return $blocks;
|
||||
}
|
||||
|
||||
public function getTxsInBlock($block_id) {
|
||||
$r = $this->dbh->prepare("select hash from tx where block = :block_id and inactive != 1");
|
||||
$r->bindValue(':block_id', $block_id);
|
||||
$r->execute();
|
||||
return $r->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
public function getTotalCoinsMinted() {
|
||||
$r = $this->dbh->query("select sum(outputs) from tx where coinbase = 1 and inactive != 1");
|
||||
return $r->fetch(PDO::FETCH_NUM);
|
||||
}
|
||||
|
||||
public function getOutputFromTx($tx_hash) {
|
||||
$r = $this->dbh->prepare("select outputs from tx where tx = :tx_hash and inactive != 1");
|
||||
$r->bindValue(':tx_hash', $tx_hash);
|
||||
return $r->fetch(PDO::FETCH_NUM);
|
||||
}
|
||||
|
||||
public function getOutputFromHashAndVout($tx_hash, $vout) {
|
||||
$r = $this->dbh->prepare("select value from vout where inactive != 1 as a join (select id from tx where hash = :tx_hash and inactive != 1) as b where n = :vout and tx_db_id = b.id limit 1;");
|
||||
$r->bindValue(':tx_hash', $tx_hash);
|
||||
$r->bindValue(':vout', $vout);
|
||||
return $r->fetch(PDO::FETCH_NUM);
|
||||
}
|
||||
|
||||
public function getTxHashFromDBID($tx_db_id) {
|
||||
$r = $this->dbh->query("select hash from tx where id = $tx_db_id and inactive != 1 LIMIT 1");
|
||||
$v = $r->fetch(PDO::FETCH_NUM);
|
||||
return $v[0];
|
||||
}
|
||||
|
||||
|
||||
public function getTxsFromAddress($addr) {
|
||||
/* $r = $this->dbh->prepare("select distinct value, tx_db_id from vout as A join (select vout_id from vout_address where address = ?) as B where A.id = B.vout_id"); */
|
||||
try {
|
||||
$r = $this->dbh->prepare("select distinct time, F.value, F.hash from block as G join (select D.value, hash, block from tx as C join (select value, tx_db_id from vout as A join (select vout_id from vout_address where address = ? and vout_address.inactive != 1) as B where A.id = B.vout_id and A.inactive != 1) as D where D.tx_db_id = C.id and C.inactive != 1) as F where F.block = G.id and G.inactive != 1 order by time desc");
|
||||
$r->bindValue(1, $addr, PDO::PARAM_STR);
|
||||
$r->execute();
|
||||
}
|
||||
catch (PDOException $exception) {
|
||||
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
var_dump($exception->getMessage());
|
||||
}
|
||||
return $r->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
// search transaction address block index
|
||||
public function searchTABI($string) {
|
||||
if (!ctype_alnum($string)) return;
|
||||
// check for address
|
||||
if (strlen($string) == 34) {
|
||||
try {
|
||||
$r = $this->dbh->prepare("select address from vout_address where address = :address and inactive != 1");
|
||||
$r->bindValue(':address', $string);
|
||||
$r->execute();
|
||||
}
|
||||
catch (PDOException $exception) { }
|
||||
$v = $r->fetch(PDO::FETCH_NUM);
|
||||
$address = $v[0];
|
||||
if ($v && ctype_alnum($address)) { return("Location: address/?address=" . $v[0]); }
|
||||
}
|
||||
// check for block id
|
||||
if (is_numeric($string)) {
|
||||
try {
|
||||
$r = $this->dbh->prepare("select id from block where id = :string and inactive != 1");
|
||||
$r->bindValue(':string', $string);
|
||||
$r->execute();
|
||||
}
|
||||
catch (PDOException $exception) { }
|
||||
$v = $r->fetch(PDO::FETCH_NUM);
|
||||
$blockid = $v[0];
|
||||
if ($v && is_numeric($blockid)) { return("Location: block/?id=" . $v[0]); }
|
||||
}
|
||||
|
||||
// check for block hash
|
||||
try {
|
||||
$r = $this->dbh->prepare("select hash from block where hash = :string and inactive != 1");
|
||||
$r->bindValue(':string', $string);
|
||||
$r->execute();
|
||||
}
|
||||
catch (PDOException $exception) {
|
||||
//$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
//var_dump($exception->getMessage());
|
||||
//echo "testing";
|
||||
}
|
||||
$v = $r->fetch(PDO::FETCH_NUM);
|
||||
$blockhash = $v[0];
|
||||
if ($v && ctype_alnum($blockhash)) { return("Location: block/?hash=" . $v[0]); }
|
||||
else {
|
||||
// check for tx hash
|
||||
try {
|
||||
$r = $this->dbh->prepare("select hash from tx where hash = :string and inactive != 1");
|
||||
$r->bindValue(':string', $string);
|
||||
$r->execute();
|
||||
}
|
||||
catch (PDOException $exception) { }
|
||||
$v = $r->fetch(PDO::FETCH_NUM);
|
||||
$txhash = $v[0];
|
||||
if ($v && ctype_alnum($txhash)) { return("Location: tx/?txid=" . $v[0]); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function satoshi($num) { return number_format((float)($num/100000000), 8, '.', ''); }
|
||||
|
||||
// thanks Kendall Hopkins http://stackoverflow.com/a/9776726/2576956
|
||||
function prettyPrint( $json )
|
||||
{
|
||||
$result = '';
|
||||
$level = 0;
|
||||
$prev_char = '';
|
||||
$in_quotes = false;
|
||||
$ends_line_level = NULL;
|
||||
$json_length = strlen( $json );
|
||||
|
||||
for( $i = 0; $i < $json_length; $i++ ) {
|
||||
$char = $json[$i];
|
||||
$new_line_level = NULL;
|
||||
$post = "";
|
||||
if( $ends_line_level !== NULL ) {
|
||||
$new_line_level = $ends_line_level;
|
||||
$ends_line_level = NULL;
|
||||
}
|
||||
if( $char === '"' && $prev_char != '\\' ) {
|
||||
$in_quotes = !$in_quotes;
|
||||
} else if( ! $in_quotes ) {
|
||||
switch( $char ) {
|
||||
case '}': case ']':
|
||||
$level--;
|
||||
$ends_line_level = NULL;
|
||||
$new_line_level = $level;
|
||||
break;
|
||||
|
||||
case '{': case '[':
|
||||
$level++;
|
||||
case ',':
|
||||
$ends_line_level = $level;
|
||||
break;
|
||||
|
||||
case ':':
|
||||
$post = " ";
|
||||
break;
|
||||
|
||||
case " ": case " ": case "\n": case "\r":
|
||||
$char = "";
|
||||
$ends_line_level = $new_line_level;
|
||||
$new_line_level = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( $new_line_level !== NULL ) {
|
||||
$result .= "\n".str_repeat( " ", $new_line_level );
|
||||
}
|
||||
$result .= $char.$post;
|
||||
$prev_char = $char;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
?>
|
||||
@ -1,22 +0,0 @@
|
||||
#!/usr/bin/php
|
||||
<?
|
||||
// TODO: organize these fucking functions into DB/RPC buckets
|
||||
// make an include file for interface shit... prettyprint etc
|
||||
|
||||
include(__DIR__ . '/../setup/setup.php');
|
||||
include(__DIR__ . '/../class/florin_rpc.php');
|
||||
$r = new florin_RPC_client($setup["FLORIND"], 5, $rpc_setup);
|
||||
$t = new txmp($r, $dbh);
|
||||
|
||||
class txmp {
|
||||
function __construct($r, $dbh) {
|
||||
$this->rpc = $r;
|
||||
$this->dbh = $dbh;
|
||||
}
|
||||
|
||||
public function getFullTXMPList() {
|
||||
$r = $this->dbh->query("select * from txmp");
|
||||
return $r->fetchAll();
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,10 +0,0 @@
|
||||
#!/bin/sh
|
||||
trap '{
|
||||
php floexplorer.php -a unlock --debug
|
||||
exit 0
|
||||
}' INT
|
||||
while [ true ]
|
||||
do
|
||||
php floexplorer.php -a rescan -b 120 --debug 2>&1 | tee -a outfile
|
||||
sleep 25
|
||||
done
|
||||
@ -1,752 +0,0 @@
|
||||
<?
|
||||
/*
|
||||
TODO: abstract DB functions to enable new DB types
|
||||
TODO: use daux.io for comments and documentation
|
||||
*/
|
||||
|
||||
/* block parser class
|
||||
|
||||
|
||||
VARIABLES:
|
||||
|
||||
$dbh - PDO database object
|
||||
$control_count - currently, the script updates the control database field every 100 blocks
|
||||
|
||||
$rpc - a florin RPC object for making calls to florincoind
|
||||
$debug - if debug is set, important info will be output to the log
|
||||
$action - the action specified from the -a flag when running the program
|
||||
|
||||
|
||||
FUNCTIONS:
|
||||
|
||||
decho($m) - output the message passed through $m and output it if the $debug flag is set
|
||||
|
||||
get_lockdb() - returns 0 if the DB is locked, 1 if it is locked
|
||||
|
||||
set_lockdb($value) - sets lockdb to $value, outputs any warnings regarding the lockstatus
|
||||
|
||||
testSimple() - test function that is run via the "test" action
|
||||
|
||||
database_write_block($data) - $data is the block being worked on currently
|
||||
this function first uses verifyRawTX() to store transaction data, then stores block data
|
||||
|
||||
verifyRawTX($hash, $block) - the $hash here refers to the transaction hash found in the block $block (which is the index of the block - not its hash or object)
|
||||
verifyRawTX goes through and stores the transaction into the tx table
|
||||
it also calls the TXMP process for filtering transaction comments
|
||||
verifyRawTX then goes through the inputs and outputs of the transaction and stores them into their respective tables
|
||||
|
||||
fillVin($vin, $db_id) - $vin is the object containing vin data in an array, $db_id is the index of the transaction within the tx table
|
||||
fillVin stores the reference to the previous transaction referenced by this one
|
||||
|
||||
fillVout($vout, $db_id, $txid) - $vout is the output object, $db_id is the current transaction id within the tx table, $txid is the hash of the transaction we're currently focusing on
|
||||
fillVout will store both the vout table values to associate each vout with a txid
|
||||
fillVout also stores the address in each vout in a separate table for faster indexing
|
||||
|
||||
getHeight() - returns an array with all relevant info on block height
|
||||
[0] = how many blocks missing
|
||||
[1] = current height of blockchain from RPC call
|
||||
[2] = index of latest block in database
|
||||
|
||||
testScanComments($from) - display all comments from block $from and higher
|
||||
|
||||
rescan($start, $back) - $start is the block to start at, unless $back is set, in which case the program starts at block height - $back
|
||||
this function looks for reorganizations within the blockchain using fillInBlanks
|
||||
|
||||
fillInBlanks($delete, $delete_all, $start) - if $delete isn't set, the function will not delete anything. $delete_all will delete everything from tables (shouldn't use this, it's better to drop tables). $start is where program should start (which block height)
|
||||
fillInBlanks first handles deleting all data from the database if it doesn't match the current block structure. it then goes through the missing blocks and calls database_write_block for each block that is missing. the rest is history ...
|
||||
|
||||
|
||||
initial_setup() - temporary function for creating tables for the first time when running aterna with the "setup" command. this will populate MySQL database tables
|
||||
*/
|
||||
|
||||
|
||||
class block_parser {
|
||||
public $dbh;
|
||||
public $control_count;
|
||||
public function __construct($rpc, $setup_file, $debug, $action) {
|
||||
require($setup_file);
|
||||
$this->rpc = $rpc;
|
||||
$this->dbh = $dbh;
|
||||
$this->debug = $debug;
|
||||
$this->action = $action;
|
||||
$this->control_count= 0;
|
||||
}
|
||||
|
||||
function decho($m) { if ($this->debug) echo $m . "\r\n"; return $this->debug; }
|
||||
|
||||
function get_lockdb() {
|
||||
$q = $this->dbh->query("select value from control where name = 'lockdb'");
|
||||
$v = $q->fetch();
|
||||
return (int)$v[0];
|
||||
}
|
||||
|
||||
function set_lockdb($value) {
|
||||
// if we're trying to lock the database, and it's already locked, just exit
|
||||
if ($value == 1 && $this->get_lockdb() == 1 && $this->action != "unlock") {
|
||||
if ($this->action == "lock") echo "&& DB already locked. EXITING PROGRAM\r\n";
|
||||
|
||||
// if set_lockdb is called outside of the lock/unlock action
|
||||
else echo "&& DB locked ... process is currently running.\r\n&& if it isn't, execute \"./floexplorer -a unlock\" to force the DB to unlock itself.\r\n&& only do this if you are certain there is no other process modifying this database now. \r\n&& EXITING PROGRAM\r\n";
|
||||
exit();
|
||||
}
|
||||
|
||||
// otherwise, just update to $value
|
||||
$this->dbh->query("update control set value = '$value', entry = unix_timestamp(now()) where name = 'lockdb'");
|
||||
echo "&& lockdb set to $value\r\n";
|
||||
}
|
||||
|
||||
function testSimple() {
|
||||
$count = 0;
|
||||
foreach ($this->dbh->query("select address, ((sum(value)*100)-sum(value))/100000000 as v from vout_address as a join (select a.id, a.value from vout as a join (select tx.id from tx where outputs = 100000000 and coinbase = 1) as b where a.tx_db_id = b.id) as b where a.vout_id = b.id group by address order by v") as $txid) {
|
||||
echo $txid[0] . "\t" . $txid[1] . "\r\n";
|
||||
$count++;
|
||||
}
|
||||
echo "Total: $count";
|
||||
}
|
||||
|
||||
function database_write_block($data) {
|
||||
$hash = $data['hash'];
|
||||
$total_coins = 0;
|
||||
|
||||
// if we're not in the genesis block
|
||||
if ($hash != "09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea") {
|
||||
$this->decho("block " . $data["height"] . " hash $hash time " . $data["time"] . " nonce " . $data["nonce"] . " size " . $data["size"]);
|
||||
|
||||
// go through transactions in the block
|
||||
foreach ($data['tx'] as $txhash) {
|
||||
if ($coins = $this->verifyRawTX($txhash, $data["height"])) {$total_coins += $coins;}
|
||||
else { echo "* * * WARNING: could not fully parse block " . $data['height'] . "(failure to read tx $txhash) * * *\r\n"; }
|
||||
}
|
||||
|
||||
// if we've parsed 100 blocks, update the control table
|
||||
$this->control_count++;
|
||||
if (!$data["nextblockhash"] || $this->control_count % 100 == 0) {
|
||||
$this->dbh->query($q = "update control set value = '" . $data["height"] . "', entry = unix_timestamp(now()) where name = 'lastblock'");
|
||||
$this->decho("block " . $data["height"] . " UPDATE CONTROL SET VALUE = '" . $data["height"] . "' WHERE NAME = 'lastblock'");
|
||||
// echo "No next block, updating control for next time\r\n". $q . "\r\n";
|
||||
}
|
||||
}
|
||||
|
||||
// write block
|
||||
if ($hash == "09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea") {
|
||||
echo "||||| GENESIS BLOCK\r\n";
|
||||
echo $q = 'insert into block (id, hash, prev, next, time, diff, txs, total_coins, size, merk, nonce, version, inactive) values (' . $data["height"] . ', "' . $data["hash"] . '", "", "' . $data["nextblockhash"] . '", ' . $data["time"] . ', ' . $data["difficulty"] . ', ' . count($data["tx"]) . ', ' . $total_coins . ', ' . $data["size"] . ', "' . $data["merkleroot"] . '", ' . $data["nonce"] . ', ' . $data["version"] . ', 0)';
|
||||
echo "\r\n";
|
||||
} else {
|
||||
$q = 'insert into block (id, hash, prev, next, time, diff, txs, total_coins, size, merk, nonce, version, inactive) values (' . $data["height"] . ', "' . $data["hash"] . '", "' . $data["previousblockhash"] . '", "' . $data["nextblockhash"] . '", ' . $data["time"] . ', ' . $data["difficulty"] . ', ' . count($data["tx"]) . ', ' . $total_coins . ', ' . $data["size"] . ', "' . $data["merkleroot"] . '", ' . $data["nonce"] . ', ' . $data["version"] . ', 0)';
|
||||
}
|
||||
if (!$this->dbh->query($q)) {
|
||||
echo "***** FATAL ERROR: couldn't write block " . $data['height'] . " into database.\r\n";
|
||||
echo $q . "\r\n";
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
function verifyRawTX($hash, $block) {
|
||||
if ($hash == "730f0c8ddc5a592d5512566890e2a73e45feaa6748b24b849d1c29a7ab2b2300") {
|
||||
$this->decho("||||| genesis block tx found\r\n");
|
||||
} else {
|
||||
// decode and get json from this tx hex
|
||||
$raw_tx= trim($this->rpc->call('getrawtransaction', $hash));
|
||||
$decoded_tx = $this->rpc->call('decoderawtransaction', $raw_tx);
|
||||
// add up all inputs/outputs
|
||||
$satoshi = 100000000;
|
||||
$coinbase = 0;
|
||||
foreach ($decoded_tx["vout"] as $out) $outputs += round($out["value"] * $satoshi);
|
||||
foreach ($decoded_tx['vin'] as $in) if (isset($in['coinbase'])) $coinbase = 1;
|
||||
|
||||
//foreach ($raw_tx["vin"] as $in) $inputs += $in["value"] * $satoshi;
|
||||
$size = (strlen($raw_tx))/2;
|
||||
$this->decho("block $block txid $hash inputs $inputs size $size outputs $outputs");
|
||||
|
||||
// sometimes the tx-comment is null, false, or empty string, let's store it in the DB as just NULL for any of these cases
|
||||
$txc_fix = $decoded_tx['tx-comment'];
|
||||
if ($txc_fix === "" || $txc_fix === FALSE) { $txc_fix = NULL; }
|
||||
$rtime = (int)(microtime(1) * 10000);
|
||||
|
||||
$stmt = $this->dbh->prepare('insert into tx (hash, block, message, outputs, inputs, size, version, coinbase, inactive, rtime) values (?, ?, ?, ?, ?, ?, ?, ?, 0, ' . $rtime . ')');
|
||||
$stmt->bindParam(1, $hash, PDO::PARAM_STR, strlen($hash));
|
||||
$stmt->bindParam(2, $block, PDO::PARAM_INT);
|
||||
$stmt->bindParam(3, $txc_fix, PDO::PARAM_STR, strlen($txc_fix));
|
||||
$stmt->bindParam(4, $outputs, PDO::PARAM_INT);
|
||||
$stmt->bindParam(5, $inputs, PDO::PARAM_INT);
|
||||
$stmt->bindParam(6, $size, PDO::PARAM_INT);
|
||||
$stmt->bindParam(7, $decoded_tx["version"], PDO::PARAM_INT);
|
||||
$stmt->bindParam(8, $coinbase, PDO::PARAM_INT);
|
||||
|
||||
$stmt->execute();
|
||||
|
||||
$r = $this->dbh->query("select id from tx where hash = '$hash' and rtime = $rtime");
|
||||
$db_id = $r->fetchAll();
|
||||
$db_id = $db_id[0];
|
||||
|
||||
if (!$db_id) {
|
||||
$this->decho("***** FATAL ERROR: database returned no index for tx - txid = $hash *****");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
|
||||
// store vout and vin data
|
||||
foreach ($decoded_tx['vout'] as $vout) { $this->fillVout($vout, $db_id[0], $hash); }
|
||||
foreach ($decoded_tx['vin'] as $vin) { $this->fillVin($vin, $db_id[0], $coinbase); }
|
||||
|
||||
// return coins
|
||||
return $outputs;
|
||||
}
|
||||
return; // return null if error
|
||||
}
|
||||
|
||||
function fillVin($vin, $db_id, $coinbase) {
|
||||
$db_id = (int)($db_id);
|
||||
$txid = $vin['txid'];
|
||||
|
||||
// find the db_id referenced by txid
|
||||
$q = $this->dbh->query("select id from tx where hash = '$txid'");
|
||||
$r = $q->fetchAll();
|
||||
$prev_tx_db_id = $r[0][0];
|
||||
|
||||
// find the address associated with this vin
|
||||
if (isset($prev_tx_db_id) && isset($db_id) && isset($vin['txid']) && isset($vin['vout']) && !$coinbase) {
|
||||
$addr = $this->dbh->query($q = 'select address from vout_address as A join (select id from vout where n = ' . (int)$vin['vout'] . ' and tx_db_id = ' . $prev_tx_db_id . ') as B where A.vout_id = B.id');
|
||||
$address = $addr->fetchAll();
|
||||
$address = $address[0][0];
|
||||
}
|
||||
$stmt = $this->dbh->prepare('insert into vin (vout, tx_db_id, txid, address, coinbase) values (?, ?, ?, ?, ?)');
|
||||
$stmt->bindParam(1, $vin['vout'], PDO::PARAM_INT);
|
||||
$stmt->bindParam(2, $db_id, PDO::PARAM_INT);
|
||||
$stmt->bindParam(3, $txid, PDO::PARAM_STR, strlen($txid));
|
||||
$stmt->bindParam(4, $address, PDO::PARAM_STR, strlen($address));
|
||||
$stmt->bindParam(5, $coinbase, PDO::PARAM_INT);
|
||||
if (!$stmt->execute()) {
|
||||
$this->decho("***** FATAL ERROR: could not write vin into DB (txid: $txid, vout: " . $vin['vout'] . ")\r\n");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
function fillVout($vout, $db_id, $txid) {
|
||||
$satoshi = 100000000;
|
||||
// write each vout into vout table
|
||||
$stmt = $this->dbh->prepare('insert into vout (tx_db_id, value, n) values (?, ?, ?)');
|
||||
$val = round($vout['value']*$satoshi);
|
||||
$stmt->bindParam(1, $db_id, PDO::PARAM_INT);
|
||||
$stmt->bindParam(2, $val, PDO::PARAM_INT);
|
||||
$stmt->bindParam(3, $vout['n'], PDO::PARAM_INT);
|
||||
if (!$stmt->execute()) {
|
||||
$this->decho("***** FATAL ERROR: could not write vout into DB (tx_db_id: $db_id, n: " . $vout['n'] . ")\r\n");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
$db_id = (int)$this->dbh->lastInsertId();
|
||||
if (!isset($vout['scriptPubKey']['addresses'])) return;
|
||||
|
||||
// write each address into vout_address table
|
||||
foreach ($vout['scriptPubKey']['addresses'] as $address) {
|
||||
$stmt = $this->dbh->prepare('insert into vout_address (vout_id, address) values (?, ?)');
|
||||
$stmt->bindParam(1, $db_id, PDO::PARAM_INT);
|
||||
$stmt->bindParam(2, $address, PDO::PARAM_STR, strlen($address));
|
||||
if (!$stmt->execute()) {
|
||||
$this->decho("***** FATAL ERROR: could not write vout_address into DB (vout_id: $db_id)\r\n");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getHeight() {
|
||||
$r = $this->dbh->query("select MAX(id) from block where inactive = 0");
|
||||
$v = $r->fetch();
|
||||
$max_id = $v[0]; // max block in DB
|
||||
$height = $this->rpc->call('getblockcount'); // max block in local blockchain
|
||||
$r2 = $this->dbh->query("select value from control where name = 'lastblock'");
|
||||
$v2 = $r2->fetch();
|
||||
$controlMax = $v2[0]; // max block in control table under value "lastblock"
|
||||
if ($controlMax <= $max_id) {
|
||||
$max_id = $controlMax;
|
||||
}
|
||||
else echo "-- Database is up to date [$max_id/$height]\r\n";
|
||||
return array($height - $max_id, $height, $max_id, $controlMax);
|
||||
}
|
||||
|
||||
function testScanComments($from) {
|
||||
if (!$from) $from = 0;
|
||||
else $from = (int)$from;
|
||||
$height = $this->getHeight();
|
||||
for ($i = $from; $i <= $height[1]; $i++) {
|
||||
$block_hash = $this->rpc->call('getblockhash', $i);
|
||||
$block = $this->rpc->call('getblock', $block_hash);
|
||||
$this->decho("looking through block $i which has " . count($block['tx']) . "tx...");
|
||||
foreach ($block['tx'] as $txnum=>$txhash) {
|
||||
if ($txc = $this->get_tx_comment($txhash)) {
|
||||
$txcs[$block["height"]] = $txc;
|
||||
echo "$i/" . $height[1] . ": $txnum: $txc\r\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function rescan_tx($hash, $block) {
|
||||
$this->decho("=- rescanning tx $hash in block $block");
|
||||
$rawtx = $this->rpc->call('getrawtransaction', $hash);
|
||||
$dectx = $this->rpc->call('decoderawtransaction', $rawtx);
|
||||
|
||||
$blockid = $block['height'];
|
||||
$message = $dectx['tx-comment'];
|
||||
// find tx data and check if it's the same as database data
|
||||
|
||||
$q = $this->dbh->query($dbq = "select id, hash, block, message from tx where hash = '$hash' and inactive = 0");
|
||||
$r = $q->fetchAll(PDO::FETCH_NUM);
|
||||
|
||||
|
||||
// if any transactions should be inactive, find them and add them to list
|
||||
// current criteria: transaction not found within this block any more, transaction message is different (somehow)
|
||||
$inactive_tx = null;
|
||||
foreach ($r as $result_row) {
|
||||
//echo "txid: $hash ? blocks match[" . ($result_row[2] == $blockid) . "] && tx-comments match[" . ($result_row[3] == $message) . "]\r\n";
|
||||
if ($result_row[2] != $blockid || $result_row[3] != $message) {
|
||||
$inactive_tx[] = $result_row[0];
|
||||
}
|
||||
}
|
||||
|
||||
// if there are some inactive tx, make them inactive
|
||||
if (count($inactive_tx) > 0) {
|
||||
echo "\r\n=-=-=-=-=-= FOUND INACTIVE TRANSACTIONS!\r\n";
|
||||
foreach ($inactive_tx as $tx_db_id) {
|
||||
// make inactive each transaction
|
||||
$this->decho("=- update tx set inactive = 1 where id = $tx_db_id");
|
||||
if (!$this->dbh->query("update tx set inactive = 1 where id = $tx_db_id")) {
|
||||
$this->decho("***** FATAL ERROR: cannot update tx $tx_db_id to inactive");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
|
||||
// make inactive each vin
|
||||
$this->decho("=- update vin set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
if (!$this->dbh->query("update vin set inactive = 1 where tx_db_id = $tx_db_id")) {
|
||||
$this->decho("***** FATAL ERROR: cannot update vin table to set all vin where tx_db_id = $tx_db_id to inactive");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
|
||||
// get a list of all vout, make them all inactive
|
||||
$r3 = $this->dbh->query("select id from vout where tx_db_id = $tx_db_id");
|
||||
$v3 = $r3->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($v3 as $vout_db_id) {
|
||||
$vout_db_id = (int)$vout_db_id[0];
|
||||
$this->decho("=- update vout_address set inactive = 1 where vout_id = $vout_db_id");
|
||||
if (!$this->dbh->query("update vout_address set inactive = 1 where vout_id = $vout_db_id")) {
|
||||
$this->decho("***** FATAL ERROR: cannot update vout_address table to set all vout_address where vout_id = $vout_db_id inactive");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
// make the vouts inactive
|
||||
$this->decho("=- update vout set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
if (!$this->dbh->query("update vout set inactive = 1 where tx_db_id = $tx_db_id")) {
|
||||
$this->decho("***** FATAL ERROR: cannot update vout table to set all vout where tx_db_id = $tx_db_id to inactive");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function rescan($start, $back) {
|
||||
$height = $this->getHeight();
|
||||
if ($height[1] > $height[2]) echo "\r\n-- Found incomplete data in database [$height[2]/$height[1]] (control last recorded: $height[3])\r\n";
|
||||
$rpc_height = $height[1];
|
||||
|
||||
// get the highest block in our database according to control field
|
||||
$r = $this->dbh->query("select value from control where name = 'lastblock'");
|
||||
$v = $r->fetch();
|
||||
$db_lastblock = (int)$v[0];
|
||||
|
||||
// check the highest block in our database according to max(ID) vs control field
|
||||
if ($height[2] < $db_lastblock) {
|
||||
$this->decho("* * * WARNING: inconsistent data in control table - lastblock = $db_lastblock, max(id) from block = " . $height[2]);
|
||||
$db_lastblock = $height[2];
|
||||
}
|
||||
|
||||
// start looking through blocks starting at the minimum block minus our preset value
|
||||
if ($back) { $start = $db_lastblock - $back; }
|
||||
if ($start < 0) $start = 0;
|
||||
$this->decho("-- scanning last $back blocks (from height $start to $rpc_height)...");
|
||||
|
||||
for ($i = $start; $i <= $rpc_height; $i++) {
|
||||
// retrieve block data from DB
|
||||
$r = $this->dbh->query("select hash, next, prev from block where id = $i and inactive = 0");
|
||||
$v = $r->fetch();
|
||||
|
||||
// retrieve block data from RPC
|
||||
$rpc_block_hash = $this->rpc->call('getblockhash', $i);
|
||||
$rpc_block_full = $this->rpc->call('getblock', $rpc_block_hash);
|
||||
$rpc_block_next = $rpc_block_full['nextblockhash'];
|
||||
$rpc_block_prev = $rpc_block_full['previousblockhash'];
|
||||
|
||||
|
||||
// check next and previous blocks
|
||||
if ($v[1] != $rpc_block_next) {
|
||||
echo ("@@ found inconsistent data at block $i: db says next block is " . $v[1] . ", RPC says $rpc_block_next\r\n");
|
||||
if (!$this->dbh->query("update block set next = '$rpc_block_next' where id = $i and inactive != 1")) {
|
||||
echo ("***** FATAL ERROR: could not update block $i with new next value $rpc_block_next, exiting *****\r\n");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
$this->decho("~~ update block set next = '$rpc_block_next' where id = $i and inactive != 1");
|
||||
}
|
||||
if ($v[2] != $rpc_block_prev) {
|
||||
echo ("@@ found inconsistent data at block $i: db says previous block is " . $v[2] . ", RPC says $rpc_block_prev\r\n");
|
||||
if (!$q = $this->dbh->query("update block set prev = '$rpc_block_prev' where id = $i and inactive != 1")) {
|
||||
echo ("***** FATAL ERROR: could not update block $i with new prev value $rpc_block_prev, exiting *****\r\n");
|
||||
$this->set_lockdb(0);
|
||||
exit();
|
||||
}
|
||||
$this->decho("~~ update block set prev = '$rpc_block_prev' where id = $i and inactive != 1");
|
||||
}
|
||||
if ($break_after_checking_header == 1) break;
|
||||
|
||||
// check block hash - this is the big one
|
||||
if ($v[0] != $rpc_block_hash) {
|
||||
echo ("@@ found reorg or inconsistent data: db says block $i is hash " . $v[0] . ", RPC says $rpc_block_hash\r\n");
|
||||
|
||||
// find all transactions in the database in this block, and make sure they are all valid
|
||||
$q = $this->dbh->query($dbq = "select hash from tx as A join (select id from block where hash = '$rpc_block_hash') as B where B.id = A.block and A.inactive = 0");
|
||||
$r = $q->fetchAll(PDO::FETCH_NUM);
|
||||
if (count($r) > 0) {
|
||||
echo("$i ");
|
||||
$break_after_checking_header = 0;
|
||||
foreach ($r as $tx) {
|
||||
if ($this->rescan_tx($tx[0], $rpc_block_full)) {
|
||||
$this->fillInBlanks(1, 0, $i);
|
||||
$break_after_checking_header = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// make inactive all following blocks, start at the current position (reorg handling)
|
||||
$this->fillInBlanks(1, 0, $i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: separate delete from the rest of the function
|
||||
function fillInBlanks($delete, $delete_all, $start) {
|
||||
$height = $this->getHeight();
|
||||
|
||||
/* BEGIN DELETE METHOD */
|
||||
if ($delete) {
|
||||
if ($start) $delete_start = $start;
|
||||
else $delete_start = $height[2];
|
||||
$this->dbh->beginTransaction();
|
||||
$start = $delete_start;
|
||||
echo "@@ making everything inactive from $delete_start to highest block found\r\n";
|
||||
$r = $this->dbh->query("select id from block where id >= " . $delete_start . " and inactive != 1");
|
||||
$this->decho("@@ select id from block where id >= " . $delete_start . " and inactive != 1");
|
||||
$v = $r->fetchAll(PDO::FETCH_NUM);
|
||||
if (count($v) < 1) $this->decho("@@ no data in database on this block yet, skipping reorg handling procedure");
|
||||
|
||||
// reorg handling procedure (make the block, all its transactions, and all related data inactive)
|
||||
foreach ($v as $block_db_id) {
|
||||
$block_db_id = (int)$block_db_id[0];
|
||||
$r2 = $this->dbh->query("select id from tx where block = $block_db_id");
|
||||
$v2 = $r2->fetchAll(PDO::FETCH_NUM);
|
||||
foreach($v2 as $tx_db_id) {
|
||||
$tx_db_id = (int)$tx_db_id[0];
|
||||
$r3 = $this->dbh->query("select id from vout where tx_db_id = $tx_db_id");
|
||||
$v3 = $r3->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($v3 as $vout_db_id) {
|
||||
$vout_db_id = (int)$vout_db_id[0];
|
||||
$this->decho("@@ update vout_address set inactive = 1 where vout_id = $vout_db_id");
|
||||
$this->dbh->query("update vout_address set inactive = 1 where vout_id = $vout_db_id");
|
||||
}
|
||||
$this->decho("@@ update vout set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
$this->dbh->query("update vout set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
$this->dbh->query("update vin set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
$this->decho("@@ update vin set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
}
|
||||
$this->decho("@@ update tx set inactive = 1 where block = $block_db_id");
|
||||
$this->dbh->query(" update tx set inactive = 1 where block = $block_db_id");
|
||||
$this->decho("@@ update block set inactive = 1 where id = $block_db_id");
|
||||
$this->dbh->query(" update block set inactive = 1 where id = $block_db_id");
|
||||
}
|
||||
$this->dbh->commit();
|
||||
}
|
||||
else if (!$start) { $start = $height[2]+1; }
|
||||
/* END DELETE METHOD */
|
||||
// begin reading blockchain
|
||||
echo "===== Filling in the last " . ($height[1]-$start+1) . " block" . ((($height[1]-$start+1)>1)?('s'):('')) . ": height $start to " . $height[1] . "\r\n";
|
||||
for ($i = $start; $i <= $height[1]; $i++) {
|
||||
$block_hash = $this->rpc->call('getblockhash', $i);
|
||||
$block = $this->rpc->call('getblock', $block_hash);
|
||||
$this->database_write_block($block);
|
||||
}
|
||||
return $height[0] . ' ' . $height[1];
|
||||
}
|
||||
|
||||
function initial_setup() {
|
||||
$this->decho("Creating block table...");
|
||||
/* block table...
|
||||
recorded in this table is all block info possible
|
||||
id = database index
|
||||
hash = this block's hash
|
||||
prev = previous block hash
|
||||
next = next block hash
|
||||
time = unixtime of this block as reported by miner
|
||||
diff = difficulty at the time of this block
|
||||
txs = transactions within this block
|
||||
total_coins = total coins sent through this block
|
||||
size = size of this block in bytes
|
||||
merk = merkle root
|
||||
nonce = the nonce found by the miner who solved this block
|
||||
version = version no
|
||||
*/
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `block` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`hash` char(64) DEFAULT NULL,
|
||||
`prev` char(64) DEFAULT NULL,
|
||||
`next` char(64) DEFAULT NULL,
|
||||
`time` bigint(20) DEFAULT NULL,
|
||||
`diff` float DEFAULT NULL,
|
||||
`txs` int(11) DEFAULT NULL,
|
||||
`total_coins` decimal(20,0) DEFAULT NULL,
|
||||
`size` bigint(20) DEFAULT NULL,
|
||||
`merk` char(64) DEFAULT NULL,
|
||||
`nonce` bigint(20) DEFAULT NULL,
|
||||
`version` float DEFAULT NULL,
|
||||
`inactive` tinyint(1) DEFAULT 0,
|
||||
INDEX `id_index` (`id`),
|
||||
INDEX `hash_index` (`hash`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1");
|
||||
$this->dbh->query("truncate table block");
|
||||
|
||||
|
||||
/* color_coin_tx table...
|
||||
this table tracks all color coin transactions
|
||||
id = database index
|
||||
tx_db_id = database index of the florin transaction referenced in this row
|
||||
cc_db_id = database index of the color coin transaction referenced in this row
|
||||
from_address = the address this color coin transaction was sent from
|
||||
to_address = the address this color coin was sent to
|
||||
amount = the amount of color coins sent in this transaction (satoshis)
|
||||
genesis = is this a genesis transaction? (was the color coin created in this tx?)
|
||||
valid = **IMPORTANT** valid or invalid transaction (checked from previous chain data)
|
||||
*/
|
||||
|
||||
$this->decho("Creating color_coin_tx table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `color_coin_tx` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
`cc_db_id` bigint(20) DEFAULT NULL,
|
||||
`from_address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`to_address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`amount` bigint(20) DEFAULT NULL,
|
||||
`genesis` bit(1) DEFAULT NULL,
|
||||
`valid` bit(1) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `tx_db_id` (`tx_db_id`),
|
||||
KEY `cc_db_id` (`cc_db_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table color_coin_tx");
|
||||
|
||||
/* color_coins table...
|
||||
this table contains a list of all color coins, NOT color coin transactions
|
||||
id = database index
|
||||
tx_db_id = database index of florin transaction referenced in this row
|
||||
total_amount = number of total coins in this color coin set (satoshis)
|
||||
name = name of this coin
|
||||
address = originator's address
|
||||
valid = is a valid coin (maybe this column shouldn't exist)
|
||||
avatar = url for this avatar
|
||||
*/
|
||||
|
||||
$this->decho("Creating color_coins table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `color_coins` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
`total_amount` bigint(20) DEFAULT NULL,
|
||||
`name` varchar(20) DEFAULT NULL,
|
||||
`address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`valid` bit(1) NOT NULL,
|
||||
`avatar` varchar(140) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `address` (`address`),
|
||||
KEY `tx_db_id` (`tx_db_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table color_coins");
|
||||
|
||||
/* control table...
|
||||
**this is not a usual table. each row is a key value pair essentially.**
|
||||
id = database index
|
||||
name = name of this row (key)
|
||||
value = value of this row
|
||||
entry = timestamp of the last time this row was modified
|
||||
*/
|
||||
$this->decho("Creating control table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `control` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(100) DEFAULT NULL,
|
||||
`value` varchar(200) DEFAULT NULL,
|
||||
`entry` bigint(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table control");
|
||||
|
||||
/* filter table...
|
||||
** this goes against everything i believe in **
|
||||
txid = transaction id to omit the tx-comment from...
|
||||
user = address to omit the tx-comments from....
|
||||
|
||||
thank god i haven't had to use this yet.
|
||||
*/
|
||||
|
||||
$this->decho("Creating filter table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `filter` (
|
||||
`txid` char(64) DEFAULT NULL,
|
||||
`user` char(34) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table filter");
|
||||
|
||||
|
||||
/* tx table...
|
||||
this table contains data on all transactions within the FLO blockchain
|
||||
id = database index
|
||||
hash = the hash of this transaction, otherwise known as "txid"
|
||||
block = the numerical block this transaction is found in
|
||||
message = the tx-comment in this tx
|
||||
outputs = total coins output from this tx (satoshis)
|
||||
inputs = total coins input in to this tx (not implemented yet...)
|
||||
size = size in bytes
|
||||
version = version no
|
||||
coinbase = boolean whether or not this transaction is a coinbase tx
|
||||
*/
|
||||
|
||||
$this->decho("Creating tx table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `tx` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`hash` char(64) DEFAULT NULL,
|
||||
`block` bigint(14) DEFAULT NULL,
|
||||
`message` varchar(528) DEFAULT NULL,
|
||||
`outputs` bigint(20) DEFAULT NULL,
|
||||
`inputs` bigint(20) DEFAULT NULL,
|
||||
`size` bigint(20) DEFAULT NULL,
|
||||
`version` int(2) DEFAULT NULL,
|
||||
`coinbase` tinyint(1) DEFAULT NULL,
|
||||
`inactive` tinyint(1) DEFAULT 0,
|
||||
`rtime` bigint(14) DEFAULT 0,
|
||||
INDEX `id_index` (`id`),
|
||||
INDEX `hash_index` (`hash`),
|
||||
INDEX `message_index` (`message`)
|
||||
) ENGINE=InnoDB CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table tx");
|
||||
|
||||
|
||||
/* txmp table...
|
||||
this table simply lists all transactions that are part of txmp (the transaction message protocol)
|
||||
id = database index
|
||||
tx_db_id = database index of the FLO transaction in question
|
||||
*/
|
||||
$this->decho("Creating txmp table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `txmp` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `tx_db_id` (`tx_db_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table txmp");
|
||||
|
||||
|
||||
/* vin table...
|
||||
the vin table holds all values from the input of a transaction
|
||||
id = database index
|
||||
vout = the vout number this input is assigned within the transaction
|
||||
tx_db_id = the database index of the transaction this vin is contained within
|
||||
*/
|
||||
$this->decho("Creating vin table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `vin` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`vout` int(11) DEFAULT NULL,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
`txid` char(64) DEFAULT NULL,
|
||||
`coinbase` tinyint(1) DEFAULT NULL,
|
||||
`address` char(34) CHARACTER SET latin1 COLLATE latin1_bin,
|
||||
`multiaddr` tinyint(1),
|
||||
`inactive` tinyint(1) DEFAULT 0,
|
||||
INDEX `id_index` (`id`),
|
||||
INDEX `tx_db_id_index` (`tx_db_id`),
|
||||
INDEX `txid_index` (`txid`),
|
||||
INDEX `address_index` (`address`),
|
||||
INDEX `vout_index` (`vout`)
|
||||
) ENGINE=InnoDB CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table vin");
|
||||
|
||||
/* vout table...
|
||||
the vout table holds the data from the outputs of each transaction
|
||||
id = database index
|
||||
value = coins out (satoshis)
|
||||
n = output number (listed sequentially from zero. used to specify an input when this output is spent)
|
||||
tx_db_id = database index this output's containing transaction is found in
|
||||
*/
|
||||
$this->decho("Creating vout table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `vout` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`value` decimal(20,0) DEFAULT NULL,
|
||||
`n` int(11) DEFAULT NULL,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
`inactive` tinyint(1) DEFAULT 0,
|
||||
INDEX `id_index` (`id`),
|
||||
INDEX `tx_db_id_index` (`tx_db_id`)
|
||||
) ENGINE=InnoDB CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table vout");
|
||||
|
||||
/* vout_address table
|
||||
the vout_address table holds all address data for each vout
|
||||
id = database index
|
||||
address = the address found in this vout
|
||||
vout_id = database index of the referenced vout (maybe this should be called vout_db_id...)
|
||||
*/
|
||||
$this->decho("Creating vout_address table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `vout_address` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`vout_id` bigint(20) DEFAULT NULL,
|
||||
`inactive` tinyint(1) DEFAULT 0,
|
||||
INDEX `id_index` (`id`),
|
||||
INDEX `vout_id_index` (`vout_id`),
|
||||
INDEX `address_index` (`address`)
|
||||
) ENGINE=InnoDB CHARSET=latin1
|
||||
");
|
||||
$this->dbh->query("truncate table vout_address");
|
||||
|
||||
/* control table... as described above. setting up the key/value rows */
|
||||
// lastblock = the last block parsed and recorded into DB (use this to check against florincoind blockheight)
|
||||
// lockdb = control for whether or not the database is in use... **important** to prevent DB being read/written while in use
|
||||
$this->decho("building initial control table...");
|
||||
$this->dbh->query("delete from control");
|
||||
$this->dbh->query("insert into control (name, value, entry) values ('lastblock', 0, 0)");
|
||||
$this->dbh->query("insert into control (name, value, entry) values ('lockdb', 0, 0)");
|
||||
$this->decho("done.");
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,628 +0,0 @@
|
||||
<?
|
||||
/*
|
||||
TODO: abstract DB functions to enable new DB types
|
||||
TODO: use daux.io for comments and documentation
|
||||
*/
|
||||
|
||||
/* block parser class
|
||||
|
||||
|
||||
VARIABLES:
|
||||
|
||||
$dbh - PDO database object
|
||||
$control_count - currently, the script updates the control database field every 100 blocks
|
||||
|
||||
$rpc - a florin RPC object for making calls to florincoind
|
||||
$debug - if debug is set, important info will be output to the log
|
||||
$action - the action specified from the -a flag when running the program
|
||||
|
||||
|
||||
FUNCTIONS:
|
||||
|
||||
decho($m) - output the message passed through $m and output it if the $debug flag is set
|
||||
|
||||
get_lockdb() - returns 0 if the DB is locked, 1 if it is locked
|
||||
|
||||
set_lockdb($value) - sets lockdb to $value, outputs any warnings regarding the lockstatus
|
||||
|
||||
testSimple() - test function that is run via the "test" action
|
||||
|
||||
database_write_block($data) - $data is the block being worked on currently
|
||||
this function first uses verifyRawTX() to store transaction data, then stores block data
|
||||
|
||||
verifyRawTX($hash, $block) - the $hash here refers to the transaction hash found in the block $block (which is the index of the block - not its hash or object)
|
||||
verifyRawTX goes through and stores the transaction into the tx table
|
||||
it also calls the TXMP process for filtering transaction comments
|
||||
verifyRawTX then goes through the inputs and outputs of the transaction and stores them into their respective tables
|
||||
|
||||
fillVin($vin, $db_id) - $vin is the object containing vin data in an array, $db_id is the index of the transaction within the tx table
|
||||
fillVin stores the reference to the previous transaction referenced by this one
|
||||
|
||||
fillVout($vout, $db_id, $txid) - $vout is the output object, $db_id is the current transaction id within the tx table, $txid is the hash of the transaction we're currently focusing on
|
||||
fillVout will store both the vout table values to associate each vout with a txid
|
||||
fillVout also stores the address in each vout in a separate table for faster indexing
|
||||
|
||||
getHeight() - returns an array with all relevant info on block height
|
||||
[0] = how many blocks missing
|
||||
[1] = current height of blockchain from RPC call
|
||||
[2] = index of latest block in database
|
||||
|
||||
testScanComments($from) - display all comments from block $from and higher
|
||||
|
||||
rescan($start, $back) - $start is the block to start at, unless $back is set, in which case the program starts at block height - $back
|
||||
this function looks for reorganizations within the blockchain using fillInBlanks
|
||||
|
||||
fillInBlanks($delete, $delete_all, $start) - if $delete isn't set, the function will not delete anything. $delete_all will delete everything from tables (shouldn't use this, it's better to drop tables). $start is where program should start (which block height)
|
||||
fillInBlanks first handles deleting all data from the database if it doesn't match the current block structure. it then goes through the missing blocks and calls database_write_block for each block that is missing. the rest is history ...
|
||||
|
||||
|
||||
initial_setup() - temporary function for creating tables for the first time when running aterna with the "setup" command. this will populate MySQL database tables
|
||||
*/
|
||||
|
||||
|
||||
class block_parser {
|
||||
public $dbh;
|
||||
public $control_count;
|
||||
public function __construct($rpc, $dbh, $debug, $action) {
|
||||
$this->rpc = $rpc;
|
||||
$this->dbh = $dbh;
|
||||
$this->debug = $debug;
|
||||
$this->action = $action;
|
||||
if ($this->debug) $this->decho("DEBUG MODE: ON!");
|
||||
$this->control_count= 0;
|
||||
}
|
||||
|
||||
function decho($m) { if ($this->debug) echo $m . "\r\n"; return $this->debug; }
|
||||
|
||||
function get_lockdb() {
|
||||
$q = $this->dbh->query("select value from control where name = 'lockdb'");
|
||||
$v = $q->fetch();
|
||||
return (int)$v[0];
|
||||
}
|
||||
|
||||
function set_lockdb($value) {
|
||||
// if we're trying to lock the database, and it's already locked, just exit
|
||||
if ($value == 1 && $this->get_lockdb() == 1 && $this->action != "unlock") {
|
||||
if ($this->action == "lock") echo "DB already locked. EXITING PROGRAM\r\n";
|
||||
|
||||
// if set_lockdb is called outside of the lock/unlock action
|
||||
else echo "DB locked ... process is currently running. if it isn't, execute ./blockchain_cron -a unlock to force the DB to unlock itself. please only do this if you are certain there is no other running process modifying the database at this time. \r\nEXITING PROGRAM\r\n";
|
||||
exit();
|
||||
}
|
||||
|
||||
// otherwise, just update to $value
|
||||
$this->dbh->query("update control set value = '$value', entry = unix_timestamp(now()) where name = 'lockdb'");
|
||||
echo "lockdb set to $value\r\n";
|
||||
}
|
||||
|
||||
function testSimple() {
|
||||
$count = 0;
|
||||
foreach ($this->dbh->query("select address, ((sum(value)*100)-sum(value))/100000000 as v from vout_address as a join (select a.id, a.value from vout as a join (select tx.id from tx where inactive != 1 and outputs = 100000000 and coinbase = 1) as b where a.inactive != 1 and b.inactive != 1 and a.tx_db_id = b.id) as b where a.inactive != 1 and b.inactive != 1 and a.vout_id = b.id group by address order by v") as $txid) {
|
||||
echo $txid[0] . "\t" . $txid[1] . "\r\n";
|
||||
$count++;
|
||||
}
|
||||
echo "Total: $count";
|
||||
}
|
||||
|
||||
function database_write_block($data) {
|
||||
$hash = $data['hash'];
|
||||
// if we're not in the genesis block
|
||||
if ($hash != "09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea") {
|
||||
|
||||
// go through transactions in the block
|
||||
$total_coins = 0;
|
||||
foreach ($data['tx'] as $txhash) {
|
||||
if ($coins = $this->verifyRawTX($txhash, $data["height"])) {$total_coins += $coins;}
|
||||
else { echo "Fatal error: could not fully parse block (failure to read tx $txhash)\n"; }
|
||||
}
|
||||
|
||||
// if we've parsed 100 blocks, update the control table
|
||||
$this->control_count++;
|
||||
if (!$data["nextblockhash"] || $this->control_count % 10 == 0) {
|
||||
$this->dbh->query($q = "update control set value = '" . $data["height"] . "', entry = unix_timestamp(now()) where name = 'lastblock'");
|
||||
$this->decho("block " . $data['height'] . " update on CONTROL table lastblock = " . $data['height']);
|
||||
// echo "No next block, updating control for next time\r\n". $q . "\r\n";
|
||||
}
|
||||
}
|
||||
|
||||
// genesis block -- special case
|
||||
if ($hash == "09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea") {
|
||||
$total_coins = 0;
|
||||
echo $q = 'insert into block (id, hash, prev, next, time, diff, txs, total_coins, size, merk, nonce, version) values (' . $data["height"] . ', "' . $data["hash"] . '", "", "' . $data["nextblockhash"] . '", ' . $data["time"] . ', ' . $data["difficulty"] . ', ' . count($data["tx"]) . ', ' . $total_coins . ', ' . $data["size"] . ', "' . $data["merkleroot"] . '", ' . $data["nonce"] . ', ' . $data["version"] . ', ' . ')';
|
||||
} else {
|
||||
$q = 'insert into block (id, hash, prev, next, time, diff, txs, total_coins, size, merk, nonce, version) values (' . $data["height"] . ', "' . $data["hash"] . '", "' . $data["previousblockhash"] . '", "' . $data["nextblockhash"] . '", ' . $data["time"] . ', ' . $data["difficulty"] . ', ' . count($data["tx"]) . ', ' . $total_coins . ', ' . $data["size"] . ', "' . $data["merkleroot"] . '", ' . $data["nonce"] . ', ' . $data["version"] . ')';
|
||||
}
|
||||
$this->dbh->query($q);
|
||||
}
|
||||
|
||||
function verifyRawTX($hash, $block) {
|
||||
if ($hash == "730f0c8ddc5a592d5512566890e2a73e45feaa6748b24b849d1c29a7ab2b2300") {
|
||||
$this->decho("genesis block tx found");
|
||||
} else {
|
||||
// decode and get json from this tx hex
|
||||
$raw_tx= trim($this->rpc->call('getrawtransaction', $hash, null, null));
|
||||
$decoded_tx = $this->rpc->call('decoderawtransaction', $raw_tx, null, null);
|
||||
// add up all inputs/outputs
|
||||
$satoshi = 100000000;
|
||||
$coinbase = 0;
|
||||
$outputs = 0;
|
||||
$inputs = 0;
|
||||
foreach ($decoded_tx["vout"] as $out) $outputs += round($out["value"] * $satoshi);
|
||||
foreach ($decoded_tx['vin'] as $in) if (isset($in['coinbase'])) $coinbase = 1;
|
||||
//foreach ($raw_tx["vin"] as $in) $inputs += $in["value"] * $satoshi;
|
||||
$size = (strlen($raw_tx))/2;
|
||||
$this->decho("block $block hash $hash inputs $inputs size $size outputs $outputs");
|
||||
|
||||
// sometimes the tx-comment is null, false, or empty string, let's store it in the DB as just NULL for any of these cases
|
||||
if (isset($decoded_tx['tx-comment'])) $txc_fix = $decoded_tx['tx-comment'];
|
||||
if (isset($txc_fix)) { if ($txc_fix === "" || $txc_fix === FALSE) { $txc_fix = NULL; } }
|
||||
$txc_fix = "3";
|
||||
|
||||
$stmt = $this->dbh->prepare($dbq = 'insert into tx (hash, block, message, outputs, inputs, size, version, coinbase, inactive) values (?, ?, ?, ?, ?, ?, ?, ?, null)');
|
||||
$stmt->bindParam(1, $hash, PDO::PARAM_STR, strlen($hash));
|
||||
$stmt->bindParam(2, $block, PDO::PARAM_INT);
|
||||
$stmt->bindParam(3, $txc_fix, PDO::PARAM_STR, strlen($txc_fix));
|
||||
$stmt->bindParam(4, $outputs, PDO::PARAM_INT);
|
||||
$stmt->bindParam(5, $inputs, PDO::PARAM_INT);
|
||||
$stmt->bindParam(6, $size, PDO::PARAM_INT);
|
||||
$stmt->bindParam(7, $decoded_tx["version"], PDO::PARAM_INT);
|
||||
$stmt->bindParam(8, $coinbase, PDO::PARAM_INT);
|
||||
|
||||
$stmt->execute();
|
||||
|
||||
$r = $this->dbh->query("select id from tx where hash = '$hash' and inactive is null");
|
||||
$db_id = $r->fetch();
|
||||
|
||||
|
||||
/* // TXMP
|
||||
if (isset($this->txmp)) {
|
||||
if (strpos($decoded_tx["tx-comment"], "1>1>") === 0) {
|
||||
$r = $this->dbh->prepare("insert into txmp (tx_db_id) values (" . $db_id[0] . ")");
|
||||
$r->execute();
|
||||
$this->beginTXMP();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if (!$db_id) {$this->decho("FATAL ERROR: database returned no index for tx - txid = $hash query = $dbq, hash = $hash, block = $block, txc_fix = $txc_fix, outputs = $outputs, inputs = $inputs, size = $size, version = " . $decoded_tx["version"] . ", coinbase = $coinbase"); $this->set_lockdb(0); exit();}
|
||||
|
||||
// store vout and vin data
|
||||
foreach ($decoded_tx['vin'] as $vin) { $this->fillVin($vin, $db_id[0]); }
|
||||
foreach ($decoded_tx['vout'] as $vout) { $this->fillVout($vout, $db_id[0], $hash); }
|
||||
|
||||
// return coins
|
||||
return $outputs;
|
||||
}
|
||||
return; // return null if error
|
||||
}
|
||||
|
||||
function fillVin($vin, $db_id) {
|
||||
$db_id = (int)($db_id);
|
||||
if (isset($vin['txid'])) $txid = $vin['txid'];
|
||||
else return; //coinbase
|
||||
$stmt = $this->dbh->prepare('insert into vin (vout, tx_db_id, txid) values (?, ?, ?)');
|
||||
$stmt->bindParam(1, $vin['vout'], PDO::PARAM_INT);
|
||||
$stmt->bindParam(2, $db_id, PDO::PARAM_INT);
|
||||
$stmt->bindParam(3, $txid, PDO::PARAM_STR, strlen($txid));
|
||||
if (!$stmt->execute()) { print_r($stmt->errorInfo()); }
|
||||
}
|
||||
|
||||
function fillVout($vout, $db_id, $txid) {
|
||||
$satoshi = 100000000;
|
||||
// write each vout into vout table
|
||||
$stmt = $this->dbh->prepare('insert into vout (tx_db_id, value, n) values (?, ?, ?)');
|
||||
$val = round($vout['value']*$satoshi);
|
||||
$stmt->bindParam(1, $db_id, PDO::PARAM_INT);
|
||||
$stmt->bindParam(2, $val, PDO::PARAM_INT);
|
||||
$stmt->bindParam(3, $vout['n'], PDO::PARAM_INT);
|
||||
if (!$stmt->execute()) { print_r($stmt->errorInfo()); }
|
||||
$db_id = (int)$this->dbh->lastInsertId();
|
||||
if (!isset($vout['scriptPubKey']['addresses'])) return;
|
||||
|
||||
// write each address into vout_address table
|
||||
foreach ($vout['scriptPubKey']['addresses'] as $address) {
|
||||
$stmt = $this->dbh->prepare('insert into vout_address (vout_id, address) values (?, ?)');
|
||||
$stmt->bindParam(1, $db_id, PDO::PARAM_INT);
|
||||
$stmt->bindParam(2, $address, PDO::PARAM_STR, strlen($address));
|
||||
$stmt->execute();
|
||||
}
|
||||
}
|
||||
|
||||
function getHeight() {
|
||||
$r = $this->dbh->query("select MAX(id) from block where inactive != 1");
|
||||
$v = $r->fetch();
|
||||
$max_id = $v[0]; // max block in DB
|
||||
$height = $this->rpc->call('getblockcount', 0, null, null); // max block in local blockchain
|
||||
$r2 = $this->dbh->query("select value from control where name = 'lastblock'");
|
||||
$v2 = $r2->fetch();
|
||||
$controlMax = $v2[0]; // max block in control table under value "lastblock"
|
||||
if ($controlMax <= $height) {
|
||||
$max_id = $controlMax-1;
|
||||
echo "Found incomplete data in database [$controlMax/$height]\r\n";
|
||||
}
|
||||
return array($height - $max_id, $height, $max_id);
|
||||
}
|
||||
|
||||
function testScanComments($from) {
|
||||
if (!$from) $from = 0;
|
||||
else $from = (int)$from;
|
||||
$height = $this->getHeight();
|
||||
for ($i = $from; $i <= $height[1]; $i++) {
|
||||
$block_hash = $this->rpc->call('getblockhash', $i, null, null);
|
||||
$block = $this->rpc->call('getblock', $block_hash, null, null);
|
||||
$this->decho("looking through block $i which has " . count($block['tx']) . "tx...");
|
||||
foreach ($block['tx'] as $txnum=>$txhash) {
|
||||
if ($txc = $this->get_tx_comment($txhash)) {
|
||||
$txcs[$block["height"]] = $txc;
|
||||
echo "$i/" . $height[1] . ": $txnum: $txc\r\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function rescanTest($start, $back) {
|
||||
$height = $this->getHeight();
|
||||
$height = $height[1];
|
||||
|
||||
// get the highest block in our database according to control field
|
||||
$r = $this->dbh->query("select value from control where name = 'lastblock'");
|
||||
$v = $r->fetch();
|
||||
$db_lastblock = (int)$v[0];
|
||||
|
||||
if ($back) { $start = $db_lastblock - $back; }
|
||||
if ($start < 0) $start = 0;
|
||||
$this->decho("scanning from block $start to $height...");
|
||||
|
||||
for ($i = $start; $i <= $height; $i++) {
|
||||
$r = $this->dbh->query("select hash, prev, next from block where id = $i and inactive is null");
|
||||
$v = $r->fetch();
|
||||
$rpc_block_hash = $this->rpc->call('getblockhash', $i, null, null);
|
||||
// $this->decho("Block $i hash in db=" . $v[0] . ", florincoind hash = $rpc_block_hash");
|
||||
$rpc_block = $this->rpc->call('getblock', $rpc_block_hash, null, null);
|
||||
// $q = $this->dbh->query('select next from block where id = '
|
||||
$rpc_nextblock = $rpc_block['nextblockhash'];
|
||||
$q = $this->dbh->query("select next from block where id = $i and inactive is null");
|
||||
$r = $q->fetch();
|
||||
$dbh_nextblock = $r[0];
|
||||
echo "block $i nextblock RPC: $rpc_nextblock -- DBH: $dbh_nextblock\r\n";
|
||||
if ($dbh_nextblock != $rpc_nextblock) {
|
||||
echo "block $i there is inconsistent data: db says nextblock is $dbh_nextblock, rpc says nextblock is $rpc_nextblock\r\n";
|
||||
// if we're just missing the next block, let's fill it in and continue looking
|
||||
if (count($dbh_nextblock < 1)) {
|
||||
$this->dbh->query("update block set next = '$rpc_nextblock' where id = $i and inactive is null");
|
||||
$this->decho("update block set next = '$rpc_nextblock' where id = $i and inactive is null");
|
||||
}
|
||||
}
|
||||
if ($v[0] != $rpc_block_hash) {
|
||||
echo ("found reorg or inconsistent data: db says block $i is hash " . $v[0] . ", RPC says $rpc_block_hash\r\n");
|
||||
$this->fillInBlanks(1, 0, $i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
function rescan($start, $back) {
|
||||
$height = $this->getHeight();
|
||||
$height = $height[1];
|
||||
|
||||
// get the highest block in our database according to control field
|
||||
$r = $this->dbh->query("select value from control where name = 'lastblock'");
|
||||
$v = $r->fetch();
|
||||
$db_lastblock = (int)$v[0];
|
||||
|
||||
if ($back) { $start = $db_lastblock - $back; }
|
||||
if ($start < 0) $start = 0;
|
||||
$this->decho("scanning from block $start to $height...");
|
||||
|
||||
for ($i = $start; $i <= $height; $i++) {
|
||||
$r = $this->dbh->query("select hash, prev, next from block where id = $i");
|
||||
$v = $r->fetch();
|
||||
$rpc_block_hash = $this->rpc->call('getblockhash', $i, null, null);
|
||||
// $this->decho("Block $i hash in db=" . $v[0] . ", florincoind hash = $rpc_block_hash");
|
||||
if ($v[0] != $rpc_block_hash) {
|
||||
echo ("found reorg or inconsistent data: db says block $i is hash " . $v[0] . ", RPC says $rpc_block_hash\r\n");
|
||||
// delete all invalid blocks, start at the current position (reorg detection and fill)
|
||||
$this->fillInBlanks(1, 0, $i);
|
||||
break;
|
||||
$this->decho("fin");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: separate delete from the rest of the function
|
||||
function fillInBlanks($delete, $delete_all, $start) {
|
||||
$height = $this->getHeight();
|
||||
|
||||
/* BEGIN DELETE METHOD */
|
||||
if ($delete) {
|
||||
if ($start) $delete_start = $start;
|
||||
else $delete_start = $height[2];
|
||||
$this->dbh->beginTransaction();
|
||||
$start = $delete_start;
|
||||
echo "Making everything inactive from $delete_start to highest block found\r\n";
|
||||
$r = $this->dbh->query("select id from block where id >= " . $delete_start . " and inactive is null");
|
||||
$this->decho("select id from block where id > " . $delete_start);
|
||||
$v = $r->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($v as $block_db_id) {
|
||||
$block_db_id = (int)$block_db_id[0];
|
||||
$r2 = $this->dbh->query("select id from tx where block = $block_db_id");
|
||||
$v2 = $r2->fetchAll(PDO::FETCH_NUM);
|
||||
foreach($v2 as $tx_db_id) {
|
||||
$tx_db_id = (int)$tx_db_id[0];
|
||||
$r3 = $this->dbh->query("select id from vout where tx_db_id = $tx_db_id");
|
||||
$v3 = $r3->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($v3 as $vout_db_id) {
|
||||
$vout_db_id = (int)$vout_db_id[0];
|
||||
$this->decho(" update vout_address set inactive = 1 where vout_id = $vout_db_id");
|
||||
$this->dbh->query("update vout_address set inactive = 1 where vout_id = $vout_db_id");
|
||||
}
|
||||
$this->decho(" update vout set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
$this->dbh->query("update vout set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
$this->dbh->query("update vin set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
$this->decho(" update vin set inactive = 1 where tx_db_id = $tx_db_id");
|
||||
}
|
||||
$this->decho(" update tx set inactive = 1 where block = $block_db_id");
|
||||
$this->dbh->query(" update tx set inactive = 1 where block = $block_db_id");
|
||||
$this->decho(" update block set inactive = 1 where id = $block_db_id");
|
||||
$this->dbh->query(" update block set inactive = 1 where id = $block_db_id");
|
||||
}
|
||||
$this->dbh->commit();
|
||||
}
|
||||
else if (!$start) { $start = $height[2]+1; }
|
||||
/* END DELETE METHOD */
|
||||
// begin reading blockchain
|
||||
echo "Filling in the last " . ($height[1]-$start) . " blocks from $start to " . $height[1] . "...\r\n";
|
||||
for ($i = $start; $i <= $height[1]; $i++) {
|
||||
$block_hash = $this->rpc->call('getblockhash', $i, null, null);
|
||||
$block = $this->rpc->call('getblock', $block_hash, null, null);
|
||||
$this->database_write_block($block);
|
||||
}
|
||||
return $height[0] . ' ' . $height[1];
|
||||
}
|
||||
|
||||
function initial_setup() {
|
||||
$this->decho("Creating block table...");
|
||||
/* block table...
|
||||
recorded in this table is all block info possible
|
||||
id = database index
|
||||
hash = this block's hash
|
||||
prev = previous block hash
|
||||
next = next block hash
|
||||
time = unixtime of this block as reported by miner
|
||||
diff = difficulty at the time of this block
|
||||
txs = transactions within this block
|
||||
total_coins = total coins sent through this block
|
||||
size = size of this block in bytes
|
||||
merk = merkle root
|
||||
nonce = the nonce found by the miner who solved this block
|
||||
version = version no
|
||||
*/
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `block` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`hash` char(64) DEFAULT NULL,
|
||||
`prev` char(64) DEFAULT NULL,
|
||||
`next` char(64) DEFAULT NULL,
|
||||
`time` bigint(20) DEFAULT NULL,
|
||||
`diff` float DEFAULT NULL,
|
||||
`txs` int(11) DEFAULT NULL,
|
||||
`total_coins` decimal(20,0) DEFAULT NULL,
|
||||
`size` bigint(20) DEFAULT NULL,
|
||||
`merk` char(64) DEFAULT NULL,
|
||||
`nonce` bigint(20) DEFAULT NULL,
|
||||
`version` float DEFAULT NULL,
|
||||
UNIQUE KEY `hash` (`hash`),
|
||||
KEY `block_hash_index` (`hash`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1");
|
||||
|
||||
|
||||
/* color_coin_tx table...
|
||||
this table tracks all color coin transactions
|
||||
id = database index
|
||||
tx_db_id = database index of the florin transaction referenced in this row
|
||||
cc_db_id = database index of the color coin transaction referenced in this row
|
||||
from_address = the address this color coin transaction was sent from
|
||||
to_address = the address this color coin was sent to
|
||||
amount = the amount of color coins sent in this transaction (satoshis)
|
||||
genesis = is this a genesis transaction? (was the color coin created in this tx?)
|
||||
valid = **IMPORTANT** valid or invalid transaction (checked from previous chain data)
|
||||
*/
|
||||
|
||||
$this->decho("Creating color_coin_tx table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `color_coin_tx` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
`cc_db_id` bigint(20) DEFAULT NULL,
|
||||
`from_address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`to_address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`amount` bigint(20) DEFAULT NULL,
|
||||
`genesis` bit(1) DEFAULT NULL,
|
||||
`valid` bit(1) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `tx_db_id` (`tx_db_id`),
|
||||
KEY `cc_db_id` (`cc_db_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
/* color_coins table...
|
||||
this table contains a list of all color coins, NOT color coin transactions
|
||||
id = database index
|
||||
tx_db_id = database index of florin transaction referenced in this row
|
||||
total_amount = number of total coins in this color coin set (satoshis)
|
||||
name = name of this coin
|
||||
address = originator's address
|
||||
valid = is a valid coin (maybe this column shouldn't exist)
|
||||
avatar = url for this avatar
|
||||
*/
|
||||
|
||||
$this->decho("Creating color_coins table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `color_coins` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
`total_amount` bigint(20) DEFAULT NULL,
|
||||
`name` varchar(20) DEFAULT NULL,
|
||||
`address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`valid` bit(1) NOT NULL,
|
||||
`avatar` varchar(140) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `address` (`address`),
|
||||
KEY `tx_db_id` (`tx_db_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
/* control table...
|
||||
**this is not a usual table. each row is a key value pair essentially.**
|
||||
id = database index
|
||||
name = name of this row (key)
|
||||
value = value of this row
|
||||
entry = timestamp of the last time this row was modified
|
||||
*/
|
||||
$this->decho("Creating control table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `control` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(100) DEFAULT NULL,
|
||||
`value` varchar(200) DEFAULT NULL,
|
||||
`entry` bigint(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
/* filter table...
|
||||
** this goes against everything i believe in **
|
||||
txid = transaction id to omit the tx-comment from...
|
||||
user = address to omit the tx-comments from....
|
||||
|
||||
thank god i haven't had to use this yet.
|
||||
*/
|
||||
|
||||
$this->decho("Creating filter table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `filter` (
|
||||
`txid` char(64) DEFAULT NULL,
|
||||
`user` char(34) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
|
||||
/* tx table...
|
||||
this table contains data on all transactions within the FLO blockchain
|
||||
id = database index
|
||||
hash = the hash of this transaction, otherwise known as "txid"
|
||||
block = the numerical block this transaction is found in
|
||||
message = the tx-comment in this tx
|
||||
outputs = total coins output from this tx (satoshis)
|
||||
inputs = total coins input in to this tx (not implemented yet...)
|
||||
size = size in bytes
|
||||
version = version no
|
||||
coinbase = boolean whether or not this transaction is a coinbase tx
|
||||
*/
|
||||
|
||||
$this->decho("Creating tx table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `tx` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`hash` char(64) DEFAULT NULL,
|
||||
`block` bigint(14) DEFAULT NULL,
|
||||
`message` varchar(528) DEFAULT NULL,
|
||||
`outputs` bigint(20) DEFAULT NULL,
|
||||
`inputs` bigint(20) DEFAULT NULL,
|
||||
`size` bigint(20) DEFAULT NULL,
|
||||
`version` int(2) DEFAULT NULL,
|
||||
`coinbase` tinyint(1) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `hash` (`hash`),
|
||||
KEY `tx_hash_index` (`hash`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=382056 DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
|
||||
/* txmp table...
|
||||
this table simply lists all transactions that are part of txmp (the transaction message protocol)
|
||||
id = database index
|
||||
tx_db_id = database index of the FLO transaction in question
|
||||
*/
|
||||
$this->decho("Creating txmp table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `txmp` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `tx_db_id` (`tx_db_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
|
||||
/* vin table...
|
||||
the vin table holds all values from the input of a transaction
|
||||
id = database index
|
||||
vout = the vout number this input is assigned within the transaction
|
||||
tx_db_id = the database index of the transaction this vin is contained within
|
||||
*/
|
||||
$this->decho("Creating vin table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `vin` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`vout` int(11) DEFAULT NULL,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
`txid` char(64) DEFAULT NULL,
|
||||
`address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`multiaddr` tinyint(1),
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=688672 DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
/* vout table...
|
||||
the vout table holds the data from the outputs of each transaction
|
||||
id = database index
|
||||
value = coins out (satoshis)
|
||||
n = output number (listed sequentially from zero. used to specify an input when this output is spent)
|
||||
tx_db_id = database index this output's containing transaction is found in
|
||||
*/
|
||||
$this->decho("Creating vout table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `vout` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`value` decimal(20,0) DEFAULT NULL,
|
||||
`n` int(11) DEFAULT NULL,
|
||||
`tx_db_id` bigint(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id` (`id`),
|
||||
UNIQUE KEY `id_2` (`id`),
|
||||
UNIQUE KEY `id_3` (`id`),
|
||||
KEY `fk_tx_db_id` (`tx_db_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=601697 DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
/* vout_address table
|
||||
the vout_address table holds all address data for each vout
|
||||
id = database index
|
||||
address = the address found in this vout
|
||||
vout_id = database index of the referenced vout (maybe this should be called vout_db_id...)
|
||||
*/
|
||||
$this->decho("Creating vout_address table...");
|
||||
$this->dbh->query("
|
||||
CREATE TABLE `vout_address` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`address` char(34) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
|
||||
`vout_id` bigint(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id` (`id`),
|
||||
UNIQUE KEY `id_2` (`id`),
|
||||
UNIQUE KEY `id_3` (`id`),
|
||||
UNIQUE KEY `vout_id` (`vout_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=574599 DEFAULT CHARSET=latin1
|
||||
");
|
||||
|
||||
/* control table... as described above. setting up the key/value rows */
|
||||
// lastblock = the last block parsed and recorded into DB (use this to check against florincoind blockheight)
|
||||
// lockdb = control for whether or not the database is in use... **important** to prevent DB being read/written while in use
|
||||
$this->decho("building initial control table...");
|
||||
$this->dbh->query("delete from control");
|
||||
$this->dbh->query("insert into control (name, value, entry) values ('lastblock', 0, 0)");
|
||||
$this->dbh->query("insert into control (name, value, entry) values ('lockdb', 0, 0)");
|
||||
$this->decho("done.");
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,96 +0,0 @@
|
||||
<?
|
||||
// TODO: response should be array or JSON depending on setup configuration
|
||||
|
||||
include (__DIR__ . '/../lib/jsonrpcphp/includes/jsonRPCClient.php');
|
||||
|
||||
class florin_RPC_client {
|
||||
public $CLI;
|
||||
|
||||
function __construct($setup_file, $CLI) {
|
||||
$DB_TYPE = 'none';
|
||||
require($setup_file);
|
||||
$this->spawnDaemon($rpc_setup);
|
||||
$this->CLI = $CLI;
|
||||
|
||||
if ($CLI || $setup['CLI']) {
|
||||
echo "----- RPC setup ----- testing RPC: ";
|
||||
// check if connected
|
||||
if ($hashps = $this->call("getnetworkhashps")) {
|
||||
echo "Network Hashrate: " . number_format($hashps, 0, '', ',') . "\r\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// pass in rpc setup from setup.php / setup.conf - spawn jasonRPCClient
|
||||
function spawnDaemon($rpc_setup) {
|
||||
extract($rpc_setup);
|
||||
try {
|
||||
$this->florind = new jsonRPCClient("http://$RPC_USER:$RPC_PASS@$RPC_HOST:$RPC_PORT/");
|
||||
} catch (Exception $e) {
|
||||
if ($this->$CLI) echo "***** FATAL ERROR: could not connect to florincoind *****\r\n";
|
||||
}
|
||||
if (isset($this->florind)) {}
|
||||
else {
|
||||
if ($this->CLI) echo "***** FATAL ERROR: cannot connect to daemon *****\r\n";
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
// warning: $arg is type sensitive
|
||||
// more info on calls can be found here: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
|
||||
// also find info on what each call does: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list
|
||||
function call($command, $args = null) {
|
||||
try {
|
||||
switch ($command) {
|
||||
case "listaddressesbyaccount":
|
||||
$rv = $this->florind->listaddressesbyaccount($args);
|
||||
break;
|
||||
case "listunspent":
|
||||
$rv = $this->florind->listunspent($args);
|
||||
break;
|
||||
case "listtransactions":
|
||||
$rv = $this->florind->listtransactions($args);
|
||||
break;
|
||||
case "getnetworkhashps":
|
||||
$rv = $this->florind->getnetworkhashps();
|
||||
break;
|
||||
case "getrawmempool":
|
||||
$rv = $this->florind->getrawmempool();
|
||||
break;
|
||||
case "getblockcount":
|
||||
$rv = $this->florind->getblockcount();
|
||||
break;
|
||||
case "getblockhash":
|
||||
$rv = $this->florind->getblockhash($args);
|
||||
break;
|
||||
case "getblock":
|
||||
$rv = $this->florind->getblock($args);
|
||||
break;
|
||||
case "getrawtransaction":
|
||||
$rv = $this->florind->getrawtransaction($args);
|
||||
break;
|
||||
case "decoderawtransaction":
|
||||
$rv = $this->florind->decoderawtransaction($args);
|
||||
break;
|
||||
case "signrawtransaction":
|
||||
$rv = $this->florind->signrawtransaction($args);
|
||||
break;
|
||||
case "sendrawtransaction":
|
||||
$rv = $this->florind->sendrawtransaction($args);
|
||||
break;
|
||||
case "createrawtransaction":
|
||||
$rv = $this->florind->createrawtransaction($args[0], $args[1], $args[2]);
|
||||
break;
|
||||
default:
|
||||
if ($this->CLI) echo "* * * WARNING: RPC client given incorrect input parameters * * *\r\n";
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception $e) {
|
||||
if ($this->CLI) echo "* * * WARNING: could not successfully call " . $command . " with given arguments * * *\r\n";
|
||||
}
|
||||
return $rv;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,46 +0,0 @@
|
||||
<?
|
||||
print <<<END
|
||||
blockchain_cron.php
|
||||
|
||||
This file contains the controlling mechanism for the blockchain parsing and caching processes.
|
||||
It should be run with the fill command from a crontab or similar service every 1 minute or less.
|
||||
|
||||
Additional functions are accessable through this interface, but can also be called through the RPC client.
|
||||
|
||||
NOTE: Permissions for this file may need to be changed to allow execute on the cron/automated service user.
|
||||
For this reason it is sometimes necessary to apply 755 or similar permissions to this file.
|
||||
|
||||
|
||||
Running this executable with the following arguments will have the following effects:
|
||||
|
||||
The first argument is always the command you wish to execute.
|
||||
|
||||
"fill": The fill command will delete all entries of blocks in the database from the last found block
|
||||
and attempt to rebuild the database from there. In general, it should never have to delete
|
||||
previous blocks. An additional cron using the bchk command should be run to check the
|
||||
authenticity and accuracy of the locally cached blockchain.
|
||||
\$argv[3] will set the number of the block to start at.
|
||||
|
||||
"redo": The redo command will do the same as fill but will automatically delete every block and start
|
||||
from zero. This may take a long time.
|
||||
|
||||
"test": This command executes a test function from the data_store class.
|
||||
|
||||
"msgs": Output all messges from \$argv[3] to the height of the blockchain.
|
||||
|
||||
"height": Gets the height from the blockchain.
|
||||
|
||||
|
||||
-debug:
|
||||
When debug mode is on, additional messages will be echoed to the screen.
|
||||
When debug mode is off, only important messages will be displayed periodically.
|
||||
|
||||
This file should always be in the root directory.
|
||||
|
||||
-s
|
||||
Specifies which block to start the process from.
|
||||
Example: fill -s 10000 starts from block 10000.
|
||||
|
||||
END;
|
||||
exit();
|
||||
?>
|
||||
@ -1,71 +0,0 @@
|
||||
#!/usr/bin/php
|
||||
<?
|
||||
// metacoin 2014
|
||||
|
||||
// floexplorer.php
|
||||
// run this file in a cron or the provided shell script (or your own method) to constantly update the database
|
||||
|
||||
require ('class/florin_rpc.php');
|
||||
require ('class/block_parser.php');
|
||||
|
||||
echo "##### FLORIN BLOCK EXPLORER v0.31 - metacoin 2014\r\n";
|
||||
|
||||
if ($argv[1] == "help" || $argv[1] == "-h" || $argv[1] == "-help") { include ('doc/help.php'); }
|
||||
|
||||
$options = getopt("a:s:b:", array("debug", "delete"));
|
||||
|
||||
$florin_rpc = new florin_RPC_client('setup/setup.php', 1);
|
||||
$block_parser = new block_parser($florin_rpc, 'setup/setup.php', isset($options['debug']), $options['a']);
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
/* BEGIN */
|
||||
|
||||
switch ($options['a']) {
|
||||
case "fill":
|
||||
$block_parser->set_lockdb(1);
|
||||
$block_parser->fillInBlanks(isset($options['delete']), isset($options['deleteall']), (int)($options['s']));
|
||||
$block_parser->set_lockdb(0);
|
||||
break;
|
||||
case "redo":
|
||||
$block_parser->set_lockdb(1);
|
||||
$block_parser->fillInBlanks(1, 1);
|
||||
$block_parser->set_lockdb(0);
|
||||
break;
|
||||
case "rescan":
|
||||
$block_parser->set_lockdb(1);
|
||||
$block_parser->rescan((int)($options['s']), (int)($options['b']));
|
||||
$block_parser->set_lockdb(0);
|
||||
break;
|
||||
case "test":
|
||||
$block_parser->testSimple();
|
||||
break;
|
||||
case "msgs":
|
||||
$block_parser->testScanComments((int)($options['s']));
|
||||
break;
|
||||
case "unlock":
|
||||
$block_parser->set_lockdb(0);
|
||||
break;
|
||||
case "lock":
|
||||
$block_parser->set_lockdb(1);
|
||||
break;
|
||||
case "height":
|
||||
$h = $block_parser->getHeight();
|
||||
echo "Current block: " . $h[1] . "\r\n";
|
||||
echo "Max block in DB: " .$h[2] . "\r\n";
|
||||
break;
|
||||
case "setup":
|
||||
$block_parser->initial_setup();
|
||||
break;
|
||||
default:
|
||||
echo "No command selected. Try passing a command as the first argument (argv[1]).\r\n";
|
||||
break;
|
||||
}
|
||||
|
||||
/* END */
|
||||
|
||||
$endTime = microtime(true);
|
||||
$elapsed = $endTime - $startTime;
|
||||
echo "%%%%% Execution time : $elapsed seconds %%%%%\r\n\r\n";
|
||||
|
||||
?>
|
||||
@ -1,11 +0,0 @@
|
||||
<?
|
||||
function api_exit($data) {
|
||||
ob_start();
|
||||
echo $data;
|
||||
$size = ob_get_length();
|
||||
header('Content-type: application/json');
|
||||
header("Content-Length: $size");
|
||||
ob_end_flush();
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
@ -1,339 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
@ -1,3 +0,0 @@
|
||||
Copyright 2007 Sergio Vaccaro <sergio@inservibile.org>
|
||||
|
||||
See http://jsonrpcphp.org/ for license, docs, sources and info.
|
||||
@ -1,23 +0,0 @@
|
||||
<?php
|
||||
require_once 'jsonRPCClient.php';
|
||||
$myExample = new jsonRPCClient('http://jsonrpcphp.org/server.php');
|
||||
|
||||
// performs some basic operation
|
||||
echo '<b>Attempt to perform basic operations</b><br />'."\n";
|
||||
try {
|
||||
echo 'Your name is <i>'.$myExample->giveMeSomeData('name').'</i><br />'."\n";
|
||||
$myExample->changeYourState('I am using this function from the network');
|
||||
echo 'Your status request has been accepted<br />'."\n";
|
||||
} catch (Exception $e) {
|
||||
echo nl2br($e->getMessage()).'<br />'."\n";
|
||||
}
|
||||
|
||||
// performs some strategic operation, locally allowed
|
||||
echo '<br /><b>Attempt to store strategic data</b><br />'."\n";
|
||||
try {
|
||||
$myExample->writeSomething('Strategic string!');
|
||||
echo 'Strategic data succefully stored';
|
||||
} catch (Exception $e) {
|
||||
echo nl2br($e->getMessage());
|
||||
}
|
||||
?>
|
||||
@ -1,23 +0,0 @@
|
||||
<?php
|
||||
require_once 'example.php';
|
||||
$myExample = new example();
|
||||
|
||||
// performs some basic operation
|
||||
echo '<b>Attempt to perform basic operations</b><br />'."\n";
|
||||
try {
|
||||
echo 'Your name is <i>'.$myExample->giveMeSomeData('name').'</i><br />'."\n";
|
||||
$myExample->changeYourState('I am using this function from the local environement');
|
||||
echo 'Your status request has been accepted<br />'."\n";
|
||||
} catch (Exception $e) {
|
||||
echo nl2br($e->getMessage()).'<br />'."\n";
|
||||
}
|
||||
|
||||
// performs some strategic operation, locally allowed
|
||||
echo '<br /><b>Attempt to store strategic data</b><br />'."\n";
|
||||
try {
|
||||
$myExample->writeSomething('Strategic string!');
|
||||
echo 'Strategic data succefully stored';
|
||||
} catch (Exception $e) {
|
||||
echo nl2br($e->getMessage());
|
||||
}
|
||||
?>
|
||||
@ -1,9 +0,0 @@
|
||||
<?php
|
||||
require_once 'jsonRPCServer.php';
|
||||
require 'example.php';
|
||||
require 'restrictedExample.php';
|
||||
|
||||
$myExample = new restrictedExample();
|
||||
jsonRPCServer::handle($myExample)
|
||||
or print 'no request';
|
||||
?>
|
||||
@ -1,103 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* An immaginative class. You can immagine a DB interface instead or what you want
|
||||
*
|
||||
* @author sergio <jsonrpcphp@inservibile.org>
|
||||
*/
|
||||
class example {
|
||||
/**
|
||||
* An immaginative array of data
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $someData = array (
|
||||
'name' => 'Some Proper Name',
|
||||
'attr' => 'Some Personal Attribute'
|
||||
);
|
||||
|
||||
/**
|
||||
* An immaginative private method.
|
||||
* Since it is a private method, it WILL NOT be served as RPC.
|
||||
*
|
||||
* @param integer $min
|
||||
* @param integer $max
|
||||
* @return integer
|
||||
*/
|
||||
private function reserved($min,$max) {
|
||||
return rand($min,$max);
|
||||
}
|
||||
|
||||
/**
|
||||
* An immaginative public method.
|
||||
* Since it is a public method, it WILL be served as RPC.
|
||||
* If you want to plug out this method, extend this class with a dummy method.
|
||||
*
|
||||
* This method returns a significative value and must be implemented as a RPC request.
|
||||
*
|
||||
* @param string $param
|
||||
* @return mixed
|
||||
*/
|
||||
public function giveMeSomeData($param) {
|
||||
/*
|
||||
You can have a very complex code here
|
||||
*/
|
||||
|
||||
if (array_key_exists($param,$this->someData)) {
|
||||
return $this->someData[$param];
|
||||
} else {
|
||||
throw new Exception('Invalid parameter '.$param);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An immaginative public method.
|
||||
* Since it is a public method, it WILL be served as RPC.
|
||||
* If you want to plug out this method, extend this class with a dummy method.
|
||||
*
|
||||
* This method return a trivial value and can be implemented as a RPC notification.
|
||||
*
|
||||
* @param string $state
|
||||
* @return boolean
|
||||
*/
|
||||
public function changeYourState($state) {
|
||||
/*
|
||||
You can have a very complex code here
|
||||
*/
|
||||
|
||||
// happy folks are not allowed to overcharge the host
|
||||
$state = substr($state,0,32);
|
||||
|
||||
if ($tmpFile = fopen ('/tmp/state.txt','a')) {
|
||||
fwrite($tmpFile,date('r').' - '.$state."\n");
|
||||
fclose($tmpFile);
|
||||
return true;
|
||||
} else {
|
||||
throw new Exception('Unable to change the internal state');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An immaginative public method.
|
||||
* Since it is a public method, it WILL be served as RPC.
|
||||
* If you want to plug out this method, extend this class with a dummy method.
|
||||
*
|
||||
* We suppose that this method alter strategic data and that we don't want to serve it as RPC.
|
||||
*
|
||||
* @param string $something
|
||||
* @return boolean
|
||||
*/
|
||||
public function writeSomething($something) {
|
||||
/*
|
||||
You can have a very complex code here
|
||||
*/
|
||||
|
||||
if ($tmpFile = fopen ('/tmp/storeData.txt','a')) {
|
||||
fwrite($tmpFile,date('r').' - '.$something."\n");
|
||||
fclose($tmpFile);
|
||||
return true;
|
||||
} else {
|
||||
throw new Exception('Unable to change the internal state');
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,165 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
COPYRIGHT
|
||||
|
||||
Copyright 2007 Sergio Vaccaro <sergio@inservibile.org>
|
||||
|
||||
This file is part of JSON-RPC PHP.
|
||||
|
||||
JSON-RPC PHP is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
JSON-RPC PHP is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with JSON-RPC PHP; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* The object of this class are generic jsonRPC 1.0 clients
|
||||
* http://json-rpc.org/wiki/specification
|
||||
*
|
||||
* @author sergio <jsonrpcphp@inservibile.org>
|
||||
*/
|
||||
class jsonRPCClient {
|
||||
|
||||
/**
|
||||
* Debug state
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $debug;
|
||||
|
||||
/**
|
||||
* The server URL
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $url;
|
||||
/**
|
||||
* The request id
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
private $id;
|
||||
/**
|
||||
* If true, notifications are performed instead of requests
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $notification = false;
|
||||
|
||||
/**
|
||||
* Takes the connection parameters
|
||||
*
|
||||
* @param string $url
|
||||
* @param boolean $debug
|
||||
*/
|
||||
public function __construct($url,$debug = false) {
|
||||
// server URL
|
||||
$this->url = $url;
|
||||
// proxy
|
||||
empty($proxy) ? $this->proxy = '' : $this->proxy = $proxy;
|
||||
// debug state
|
||||
empty($debug) ? $this->debug = false : $this->debug = true;
|
||||
// message id
|
||||
$this->id = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the notification state of the object. In this state, notifications are performed, instead of requests.
|
||||
*
|
||||
* @param boolean $notification
|
||||
*/
|
||||
public function setRPCNotification($notification) {
|
||||
empty($notification) ?
|
||||
$this->notification = false
|
||||
:
|
||||
$this->notification = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a jsonRCP request and gets the results as an array
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $params
|
||||
* @return array
|
||||
*/
|
||||
public function __call($method,$params) {
|
||||
|
||||
// check
|
||||
if (!is_scalar($method)) {
|
||||
throw new Exception('Method name has no scalar value');
|
||||
}
|
||||
|
||||
// check
|
||||
if (is_array($params)) {
|
||||
// no keys
|
||||
$params = array_values($params);
|
||||
} else {
|
||||
throw new Exception('Params must be given as array');
|
||||
}
|
||||
|
||||
// sets notification or request task
|
||||
if ($this->notification) {
|
||||
$currentId = NULL;
|
||||
} else {
|
||||
$currentId = $this->id;
|
||||
}
|
||||
|
||||
// prepares the request
|
||||
$request = array(
|
||||
'method' => $method,
|
||||
'params' => $params,
|
||||
'id' => $currentId
|
||||
);
|
||||
$request = json_encode($request);
|
||||
$this->debug && $this->debug.='***** Request *****'."\n".$request."\n".'***** End Of request *****'."\n\n";
|
||||
|
||||
// performs the HTTP POST
|
||||
$opts = array ('http' => array (
|
||||
'method' => 'POST',
|
||||
'header' => 'Content-type: application/json',
|
||||
'content' => $request
|
||||
));
|
||||
$context = stream_context_create($opts);
|
||||
if ($fp = fopen($this->url, 'r', false, $context)) {
|
||||
$response = '';
|
||||
while($row = fgets($fp)) {
|
||||
$response.= trim($row)."\n";
|
||||
}
|
||||
$this->debug && $this->debug.='***** Server response *****'."\n".$response.'***** End of server response *****'."\n";
|
||||
$response = json_decode($response,true);
|
||||
} else {
|
||||
throw new Exception('Unable to connect to '.$this->url);
|
||||
}
|
||||
|
||||
// debug output
|
||||
if ($this->debug) {
|
||||
echo nl2br($debug);
|
||||
}
|
||||
|
||||
// final checks and return
|
||||
if (!$this->notification) {
|
||||
// check
|
||||
if ($response['id'] != $currentId) {
|
||||
throw new Exception('Incorrect response id (request id: '.$currentId.', response id: '.$response['id'].')');
|
||||
}
|
||||
if (!is_null($response['error'])) {
|
||||
throw new Exception('Request error: '.$response['error']);
|
||||
}
|
||||
|
||||
return $response['result'];
|
||||
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,85 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
COPYRIGHT
|
||||
|
||||
Copyright 2007 Sergio Vaccaro <sergio@inservibile.org>
|
||||
|
||||
This file is part of JSON-RPC PHP.
|
||||
|
||||
JSON-RPC PHP is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
JSON-RPC PHP is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with JSON-RPC PHP; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class build a json-RPC Server 1.0
|
||||
* http://json-rpc.org/wiki/specification
|
||||
*
|
||||
* @author sergio <jsonrpcphp@inservibile.org>
|
||||
*/
|
||||
class jsonRPCServer {
|
||||
/**
|
||||
* This function handle a request binding it to a given object
|
||||
*
|
||||
* @param object $object
|
||||
* @return boolean
|
||||
*/
|
||||
public static function handle($object) {
|
||||
|
||||
// checks if a JSON-RCP request has been received
|
||||
if (
|
||||
$_SERVER['REQUEST_METHOD'] != 'POST' ||
|
||||
empty($_SERVER['CONTENT_TYPE']) ||
|
||||
$_SERVER['CONTENT_TYPE'] != 'application/json'
|
||||
) {
|
||||
// This is not a JSON-RPC request
|
||||
return false;
|
||||
}
|
||||
|
||||
// reads the input data
|
||||
$request = json_decode(file_get_contents('php://input'),true);
|
||||
|
||||
// executes the task on local object
|
||||
try {
|
||||
if ($result = @call_user_func_array(array($object,$request['method']),$request['params'])) {
|
||||
$response = array (
|
||||
'id' => $request['id'],
|
||||
'result' => $result,
|
||||
'error' => NULL
|
||||
);
|
||||
} else {
|
||||
$response = array (
|
||||
'id' => $request['id'],
|
||||
'result' => NULL,
|
||||
'error' => 'unknown method or incorrect parameters'
|
||||
);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$response = array (
|
||||
'id' => $request['id'],
|
||||
'result' => NULL,
|
||||
'error' => $e->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// output the response
|
||||
if (!empty($request['id'])) { // notifications don't want response
|
||||
header('content-type: text/javascript');
|
||||
echo json_encode($response);
|
||||
}
|
||||
|
||||
// finish
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,18 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* This class extends the example class with the purpose to plug out unwanted method from the RPC mechanism.
|
||||
* Unwanted metod are simply overraided with dummy methods.
|
||||
*
|
||||
* @author sergio <jsonrpcphp@inservibile.org>
|
||||
*/
|
||||
class restrictedExample extends example {
|
||||
/**
|
||||
* This is a dummy method to plug out the parent unwanted method.
|
||||
*
|
||||
* @param string $something
|
||||
*/
|
||||
public function writeSomething($something) {
|
||||
throw new Exception('writeSomething method is not available for RPC');
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1,17 +0,0 @@
|
||||
<?
|
||||
function cron_log($script, $message, $cron_log_d) {
|
||||
$script_len = 20;
|
||||
if (strlen($script) > $script_len-2) $script = substr($script, 0, $script_len-2) . '..';
|
||||
else {
|
||||
$max = ($script_len - strlen($script));
|
||||
for ($i = 0; $i < $max; $i++) {
|
||||
$script .= '.';
|
||||
}
|
||||
}
|
||||
$h = fopen($cron_log_d, 'a+');
|
||||
$out = "[" . date("d/m/y : H:i:s", time()) . "] " . $script . ": " . $message;
|
||||
fwrite($h, $out);
|
||||
fclose($h);
|
||||
}
|
||||
|
||||
?>
|
||||
@ -1,55 +0,0 @@
|
||||
## SETUP CONFIGURATION ###
|
||||
#
|
||||
# FLORIND command to start the florincoind application
|
||||
#
|
||||
# RPC_USER RPC user found in florincoin.conf
|
||||
# RPC_PASS password found in florincoin.conf
|
||||
# RPC_HOST host name for florincoin daemon
|
||||
# RPC_PORT port number for florincoin daemon
|
||||
#
|
||||
# DB_HOST myql database host
|
||||
# DBNAME name of the database to use
|
||||
# DBUSER database user name
|
||||
# DBPASS database password
|
||||
#
|
||||
## OPTIONAL PARAMETERS:
|
||||
#
|
||||
# RECORD_BLOCKCHAIN if you want to record the entire blockchain
|
||||
# (not just messages) set this option to 1
|
||||
# set this option to 0 to only record messages
|
||||
# note: transaction IDs must be stored as well
|
||||
# LOG_DIR_CRON if you want to log the cron job, please
|
||||
# specify where this log lives
|
||||
# set this option to 0 to disable logging
|
||||
#
|
||||
# CLI command line interface (set this if you're sure
|
||||
# you're not on the web and you can recieve echo
|
||||
# debug outputs in the command-line)
|
||||
#
|
||||
## IMPORTANT NOTICE:
|
||||
#
|
||||
# this file is still not yet optimized and user-friendly !!
|
||||
# please don't have any white space between words and equals signs
|
||||
#
|
||||
|
||||
FLORIND=/home/ubuntu/florin_528/florincoin/src/./florincoind
|
||||
|
||||
RPC_USER=
|
||||
RPC_PASS=
|
||||
RPC_HOST=127.0.0.1
|
||||
RPC_PORT=18322
|
||||
|
||||
DB_HOST=
|
||||
DB_PORT=
|
||||
DB_NAME=
|
||||
DB_USER=
|
||||
DB_PASS=
|
||||
|
||||
RECORD_BLOCKCHAIN=1
|
||||
|
||||
PROTOCOLS=
|
||||
|
||||
CLI=0
|
||||
# optional crondir (leave blank if you want no log, otherwise
|
||||
# write the directory you want blockchain_cron_log.txt to go into)
|
||||
LOG_DIR=
|
||||
@ -1,94 +0,0 @@
|
||||
<?
|
||||
// metacoin 2014
|
||||
|
||||
// setup.php
|
||||
// this file should be included in every class constructor which takes advantage of the database or RPC
|
||||
|
||||
// for now, only MYSQL support...
|
||||
// set $DB_TYPE to something bogus to skip database connect
|
||||
if (!isset($DB_TYPE)) $DB_TYPE = 'MYSQL';
|
||||
|
||||
// configuration variables which are parsed from setup.conf
|
||||
// these are the required fields, all others are optional
|
||||
$conf = array(
|
||||
'RPC_USER', // the rpc user
|
||||
'RPC_PASS', // rpc password
|
||||
'RPC_HOST', // rpc hostname
|
||||
'RPC_PORT', // rpc port number
|
||||
'DB_HOST', // database host (localhost or remote)
|
||||
'DB_PORT', // database port number
|
||||
'DB_USER', // database username
|
||||
'DB_PASS' // database password
|
||||
);
|
||||
|
||||
// optional configuration variables
|
||||
$optional_conf = array(
|
||||
'FLORIND', // florincoin command to start florincoind
|
||||
'RECORD_BLOCKCHAIN', // record entire blockchain? (if disabled, only records tx-comment)
|
||||
'LOG_DIR', // directory for log
|
||||
'CLI' // command line interface (specify for debug output in setup)
|
||||
);
|
||||
|
||||
// parse and validate setup.conf
|
||||
$setup_conf= file(__DIR__ . '/setup.conf', FILE_IGNORE_NEW_LINES);
|
||||
if (!$setup_conf) die("***** FATAL ERROR: CANNOT READ setup.conf *****\r\n");
|
||||
|
||||
// parse each line of setup.conf
|
||||
$setup = null;
|
||||
foreach ($setup_conf as $key=>$val) {
|
||||
if (!$val) unset($setup_conf[$key]);
|
||||
else if ($val[0] == "#") unset($setup_conf[$key]);
|
||||
else {
|
||||
$vals = explode("=", $val);
|
||||
$setup[$vals[0]] = $vals[1];
|
||||
}
|
||||
}
|
||||
|
||||
// check if required modules are loaded
|
||||
$extensions = array(/*'bcmath', */'pdo');
|
||||
foreach ($extensions as $extension) {
|
||||
if (extension_loaded("$extension")) {
|
||||
//if (isset($setup['CLI'])) echo "$extension is loaded";
|
||||
} else {
|
||||
die("***** FATAL ERROR: $extension was not found - please install before continuing *****\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
// check if all required configuration variables are set
|
||||
$setup_check = $setup;
|
||||
foreach($optional_conf as $opt) unset($setup_check[$opt]);
|
||||
|
||||
if ($conf == array_intersect($conf, array_keys($setup_check))) {}
|
||||
else {
|
||||
echo "***** FATAL ERROR: setup.conf has the following errors:\r\n";
|
||||
$problems = array_diff($conf, (array_keys($setup_check)));
|
||||
if ($problems == $conf) {
|
||||
echo "***** You haven't set any values in setup.conf or you don't have permission to read it from this user. Please check that the settings for setup.conf are valid and your user has permission to read that file.\r\n";
|
||||
}
|
||||
else {
|
||||
foreach ($problems as $prob) echo "***** $prob not set in setup.conf *****\r\n";
|
||||
}
|
||||
}
|
||||
|
||||
// setup database
|
||||
if ($setup["LOG_DIR"]) $setup["LOG_DIR"] .= "floexplorer_log";
|
||||
if ($DB_TYPE == 'MYSQL') {
|
||||
if ($setup['CLI']) echo "setup attempting to connect to database... \r\n";
|
||||
try {
|
||||
$dbh = new PDO("mysql:host=" . $setup['DB_HOST'] . ";dbport=" . $setup['DB_PORT'] . ";dbname=" . $setup['DB_NAME'], $setup['DB_USER'], $setup['DB_PASS'], array(
|
||||
PDO::ATTR_PERSISTENT => true
|
||||
));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
die("Error connecting to database.");
|
||||
}
|
||||
}
|
||||
|
||||
// create rpc_setup variables to pass into this class
|
||||
$rpc_setup = array(
|
||||
"RPC_USER" => $setup["RPC_USER"],
|
||||
"RPC_PASS" => $setup["RPC_PASS"],
|
||||
"RPC_HOST" => $setup["RPC_HOST"],
|
||||
"RPC_PORT" => $setup["RPC_PORT"]
|
||||
);
|
||||
?>
|
||||
@ -1,259 +0,0 @@
|
||||
<?
|
||||
/*
|
||||
TODO: add error codes
|
||||
|
||||
*/
|
||||
|
||||
if (!defined('SECURITY')) exit('404');
|
||||
|
||||
// return a database handle given user credentials
|
||||
function get_dbh($setup) {
|
||||
|
||||
// setup database using user credentials stored in $setup
|
||||
try {
|
||||
|
||||
$dbh = new PDO("mysql:host=" . $setup['DB_HOST'] . ";dbport=" . $setup['DB_PORT'] . ";dbname=" . $setup['DB_NAME'], $setup['DB_USER'], $setup['DB_PASS'], array(
|
||||
PDO::ATTR_PERSISTENT => true
|
||||
));
|
||||
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
|
||||
api_exit(JSON_ENCODE(array('error'=>"Error connecting to database.", 'success'=>0)));
|
||||
|
||||
}
|
||||
|
||||
return $dbh;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function check_user_info(&$array) {
|
||||
|
||||
$accepted_length = array(
|
||||
'email' => 100,
|
||||
'remail' => 100,
|
||||
'name' => 20,
|
||||
'rname' => 20,
|
||||
'message' => 380
|
||||
);
|
||||
|
||||
$missing = null;
|
||||
$too_long = null;
|
||||
|
||||
// check if values are missing or too long
|
||||
foreach ($array as $key=>$val) { if (!$val || $val == '') $missing[] = $key; }
|
||||
foreach ($array as $key=>$val) { if (strlen($val) > $accepted_length[$key]) $too_long[] = $key; }
|
||||
if ($missing || $too_long) api_exit(JSON_ENCODE(array('error'=>array(array('missing'=>$missing), array('too_long'=>$too_long)), 'success'=>0)));
|
||||
|
||||
// check for special chars
|
||||
$string_to_check = array($array['name'], $array['email'], $array['message'], $array['rname'], $array['remail']);
|
||||
check_chars($string_to_check);
|
||||
|
||||
// rebuild array and set values
|
||||
$array['name'] = $string_to_check[0];
|
||||
$array['email'] = $string_to_check[1];
|
||||
$array['message'] = $string_to_check[2];
|
||||
$array['rname'] = $string_to_check[3];
|
||||
$array['remail'] = $string_to_check[4];
|
||||
|
||||
}
|
||||
|
||||
|
||||
// check array of strings for invalid chars, replace with another char
|
||||
function check_chars(&$array) {
|
||||
|
||||
$string_to_check = array($name, $rname, $message);
|
||||
$strcheck = array('|', '>');
|
||||
$strinto = ' ';
|
||||
|
||||
foreach ($strcheck as $check) {
|
||||
foreach ($array as $key=>$val) { $array[$key] = str_replace($strcheck, $strinto, $val); }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// handle user first creating a message from the preliminary form
|
||||
function write_love_row($dbh, $userinfo) {
|
||||
|
||||
// check userinfo for weird characters, empty strings, etc
|
||||
check_user_info($userinfo);
|
||||
|
||||
extract($userinfo);
|
||||
|
||||
// replace special chars with harmless chars
|
||||
|
||||
// create unique token
|
||||
$uniq = $email . $remail . $name . $rname . $message . microtime(true) . 'jklasjf((9@jkL@@2lllLLlLK@KJopPE))]]nnenenenq29@(928(@*@##89';
|
||||
$secret= hash_hmac('sha256', $uniq, 0, 0);
|
||||
|
||||
try {
|
||||
|
||||
// check if user already began a love note
|
||||
$q = $dbh->prepare("select count(*) from love where email = ? and (verified = 0 or done = 0 or confirmed = 0)");
|
||||
$q->bindParam(1, $email, strlen($email), PDO::PARAM_STR);
|
||||
if (!$q->execute()) { api_exit(JSON_ENCODE(array('error'=>"Sorry, we're experiencing technical difficulties. Please contact support@aterna.org (code# AL101-$secret)", 'success'=>0))); }
|
||||
$resp = $q->fetchAll(PDO::FETCH_COLUMN, 0);
|
||||
if ($resp[0] > 0) {api_exit(JSON_ENCODE(array('error'=>"Sorry $name, you've already begun a love note.", 'success'=>0)));}
|
||||
|
||||
// insert new user into database
|
||||
$q = $dbh->prepare("insert into love (email, remail, name, rname, message, token) values (?, ?, ?, ?, ?, ?)");
|
||||
$q->bindParam(1, $email, strlen($email), PDO::PARAM_STR);
|
||||
$q->bindParam(2, $remail, strlen($remail), PDO::PARAM_STR);
|
||||
$q->bindParam(3, $name, strlen($name), PDO::PARAM_STR);
|
||||
$q->bindParam(4, $rname, strlen($rname), PDO::PARAM_STR);
|
||||
$q->bindParam(5, $message, strlen($message), PDO::PARAM_STR);
|
||||
$q->bindParam(6, $secret, strlen($secret), PDO::PARAM_STR);
|
||||
if (!$q->execute()) { api_exit(JSON_ENCODE(array('error'=>"Sorry, we're experiencing technical difficulties. Please contact support@aterna.org (code# AL102-$secret)", 'success'=>0))); }
|
||||
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
|
||||
api_exit(JSON_ENCODE(array('error'=>"Sorry, we're experiencing technical difficulties. Please contact support@aterna.org (error code #AL103-$secret)", 'success'=>0)));
|
||||
|
||||
}
|
||||
|
||||
// success!
|
||||
api_exit(JSON_ENCODE(array('error'=>0, 'success'=>1)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
// user has verified his email, set database into next state
|
||||
function email_verify($dbh, $secret) {
|
||||
|
||||
$q = $dbh->prepare("update love set verified = 1 where token = ?");
|
||||
$q->bindParam(1, $secret, strlen($secret), PDO::PARAM_STR);
|
||||
|
||||
if ($q->execute()) {
|
||||
api_exit(JSON_ENCODE(array('error'=>0, 'success'=>1)));
|
||||
}
|
||||
else {
|
||||
api_exit(JSON_ENCODE(array('error'=>"Sorry, we're experiencing technical difficulties. Please contact support@aterna.org (error code #AL200-$secret)", 'success'=>0)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// check for an available transaction given account, address, and confirms
|
||||
function check_available_transaction($r, $ACCOUNT, $ADDRESS, $confirms) {
|
||||
|
||||
// get unspent transactions
|
||||
$unspent = $r->call('listunspent', $confirms);
|
||||
$unspent_tx = null;
|
||||
|
||||
foreach ($unspent as $u) { $unspent_tx[] = $u['txid']; }
|
||||
|
||||
// list transactions under this account
|
||||
$listtx = $r->call('listtransactions', $ACCOUNT);
|
||||
$listtx_tx = null;
|
||||
foreach ($listtx as $l) { $listtx_tx[] = $l['txid']; }
|
||||
|
||||
// find a transaction we can use that's unspent
|
||||
$unspent_final = array_intersect($unspent_tx, $listtx_tx);
|
||||
if (count($unspent_final) == 0) {
|
||||
// check mempool for transactions
|
||||
$mempool = $r->call('getrawmempool');
|
||||
$unspent_final_mempool = array_intersect($mempool, $listtx_tx);
|
||||
if (count($unspent_final_mempool) > 0) exit("* * * WARNING: our last transaction is still in the mempool\n");
|
||||
else{exit("***** FATAL ERROR: We have NO UNSPENT TRANSACTIONS. HUGE PROBLEM\n");}
|
||||
}
|
||||
|
||||
$txid = null;
|
||||
foreach ($unspent_final as $key=>$tx) { if (strlen($tx) == 64) $txid = $tx; }
|
||||
return $txid;
|
||||
}
|
||||
|
||||
|
||||
// write transaction
|
||||
function write_transaction_with_message($txid, $message, $r, $ADDRESS) {
|
||||
$rawtx_encoded = $r->call('getrawtransaction', $txid);
|
||||
$rawtx = $r->call('decoderawtransaction', $rawtx_encoded);
|
||||
|
||||
|
||||
// make sure the last transaction id has an output to this user
|
||||
$vouts = $rawtx['vout'];
|
||||
foreach ($vouts as $vout) {
|
||||
if ($vout['scriptPubKey']['addresses'][0] === $ADDRESS) {
|
||||
$coins = $vout['value'];
|
||||
$n = $vout['n'];
|
||||
}
|
||||
}
|
||||
|
||||
//echo "^^ found coins: $coins\n";
|
||||
//echo "^^ found vout: $n\n";
|
||||
// TODO: ADD A CONDITION THAT ENSURES THIS IS THE *ONLY* OUTPUT (FOR PROTOCOL)
|
||||
|
||||
|
||||
if (!isset($coins) || !isset($n)) {
|
||||
exit("***** FATAL ERROR: couldn't find the coins or vout of previous transaction $txid\n");
|
||||
}
|
||||
|
||||
/* at this point, there are few relevant vars:
|
||||
$tx = transaction ID of the transaction we will use
|
||||
$ADDRESS = address to send to
|
||||
$TXCOMMENT = tx-comment */
|
||||
|
||||
// build json for createrawtransaction
|
||||
|
||||
$json1 = array(array( "txid"=>$txid, "vout"=>$n));
|
||||
$json2 = array($ADDRESS=>$coins);
|
||||
$args = array($json1, $json2, $message);
|
||||
// send to rpc
|
||||
$myrawtx = ($r->call('createrawtransaction', $args));
|
||||
$signedtx = $r->call('signrawtransaction', $myrawtx);
|
||||
$signedtx_hex = $signedtx['hex'];
|
||||
$decodetx = $r->call('decoderawtransaction', $signedtx_hex);
|
||||
$newtx = $r->call('sendrawtransaction', $signedtx_hex);
|
||||
|
||||
if (!$myrawtx || !$signedtx || !$signedtx_hex /*|| !$newtx*/) {
|
||||
exit("***** FATAL ERROR: couldn't write transaction $txid to network\n");
|
||||
}
|
||||
echo "!! $newtx\n\n";
|
||||
return($newtx);
|
||||
}
|
||||
|
||||
function check_tx_confirms_rpc($dbh, $r, $txid) {
|
||||
$q = $dbh->query("select block from tx where hash = '$txid' and inactive != 1");
|
||||
$block = null;
|
||||
if ($q) {
|
||||
$z = $q->fetchAll(PDO::FETCH_COLUMN, 0);
|
||||
if ($z[0]) {
|
||||
$block= (int)$z[0];
|
||||
}
|
||||
}
|
||||
|
||||
$confirms = 0;
|
||||
if ($block) {
|
||||
$hash = $r->call('getblockhash', $block);
|
||||
$block_array = $r->call('getblock', $hash);
|
||||
$confirms = $block_array['confirmations'];
|
||||
}
|
||||
|
||||
if ($confirms > 5) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function email($to, $subject, $from, $body, $name = null, $rname = null, $message = null, $txid = null, $id = null) {
|
||||
|
||||
require_once("postmark.php");
|
||||
|
||||
$postmark = new Postmark("key",'support@aterna.org');
|
||||
|
||||
$result = $postmark->to($to)
|
||||
->subject($subject)
|
||||
->plain_message($body)
|
||||
->send();
|
||||
|
||||
if($result === true) {
|
||||
echo "## sent a message to $to from $from\n";
|
||||
return true;
|
||||
} //else echo "* * * WARNING: message to $to from $from failed (id# $id)\n";
|
||||
}
|
||||
function send_final_email($data) {
|
||||
return email($data['remail'], "A love message from " . $data['name'] . " to " . $data['rname'], $data['email'], $body, $data['name'], $data['rname'], $data['message'], $data['txid'], $data['id']);
|
||||
}
|
||||
?>
|
||||
@ -1,46 +0,0 @@
|
||||
<?
|
||||
define("SECURITY", 1);
|
||||
if (!include_once('../include/setup.inc.php')) exit('ERROR: configuration file not found.');
|
||||
include("$PATH_ATERNA/lib/api.php");
|
||||
|
||||
if ($_GET) {
|
||||
$requests = $_GET['requests'];
|
||||
$requests2 = $_GET['requests2'];
|
||||
$prefix = $_GET['prefix'];
|
||||
|
||||
if (is_numeric($requests) && is_numeric($requests2)) {
|
||||
$requests = (int)$requests;
|
||||
$requests2 = (int)$requests2;
|
||||
if ($prefix) {
|
||||
$prefix_len = strlen($prefix);
|
||||
try {
|
||||
$q = $f->dbh->prepare("select hash, block, message from tx where block > 394494 and message != '' and message is not null and inactive != 1 and substring(message, 1, $prefix_len) = ? order by block desc limit ?, ?");
|
||||
$q->bindParam(1, $prefix, $prefix_len, PDO::PARAM_STR);
|
||||
$q->bindParam(2, $requests, PDO::PARAM_INT);
|
||||
$q->bindParam(3, $requests2, PDO::PARAM_INT);
|
||||
if ($q->execute()) {
|
||||
$resp = ($q->fetchAll(PDO::FETCH_NUM));
|
||||
foreach ($resp as $key=>$val) {
|
||||
$string = $resp[$key][2];
|
||||
$string = str_replace($prefix, '', $string);
|
||||
$data = explode('|', $string);
|
||||
$resp[$key]['to'] = $data[1];
|
||||
$resp[$key]['from'] = $data[2];
|
||||
$resp[$key]['lovemsg'] = $data[0];
|
||||
}
|
||||
|
||||
$JSON = array('error' => 0, 'success' => array('URL' => 'http://aterna.org/love/tx/?', 'data' => $resp));
|
||||
} else {
|
||||
$JSON = array('error' => 'sql query failed', 'success' => 0);
|
||||
}
|
||||
} catch (PDOException $exception) {
|
||||
//var_dump($exception->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// no $_GET
|
||||
$JSON = array('error' => 'no GET', 'success' => 0);
|
||||
}
|
||||
api_exit(JSON_ENCODE($JSON));
|
||||
?>
|
||||
@ -1,108 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This is a simple library for sending emails with Postmark.
|
||||
* Created by Matthew Loberg (http://mloberg.com), extended and modified by Drew Johnston (http://drewjoh.com).
|
||||
*/
|
||||
|
||||
class Postmark {
|
||||
|
||||
private $api_key;
|
||||
private $attachment_count = 0;
|
||||
private $data = array();
|
||||
|
||||
function __construct($key, $from, $reply = '')
|
||||
{
|
||||
$this->api_key = $key;
|
||||
$this->data['From'] = $from;
|
||||
$this->data['ReplyTo'] = $reply;
|
||||
}
|
||||
|
||||
function send()
|
||||
{
|
||||
$headers = array(
|
||||
'Accept: application/json',
|
||||
'Content-Type: application/json',
|
||||
'X-Postmark-Server-Token: '.$this->api_key
|
||||
);
|
||||
|
||||
$ch = curl_init('http://api.postmarkapp.com/email');
|
||||
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($this->data));
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
|
||||
$return = curl_exec($ch);
|
||||
$curl_error = curl_error($ch);
|
||||
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
|
||||
curl_close($ch);
|
||||
|
||||
// do some checking to make sure it sent
|
||||
if($http_code !== 200)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
function to($to)
|
||||
{
|
||||
$this->data['To'] = $to;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function cc($cc)
|
||||
{
|
||||
$this->data["Cc"] = $cc;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function bcc($bcc)
|
||||
{
|
||||
$this->data["Bcc"] = $bcc;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function subject($subject)
|
||||
{
|
||||
$this->data['Subject'] = $subject;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function html_message($html)
|
||||
{
|
||||
$this->data['HtmlBody'] = $html;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function plain_message($msg)
|
||||
{
|
||||
$this->data['TextBody'] = $msg;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function tag($tag)
|
||||
{
|
||||
$this->data['Tag'] = $tag;
|
||||
return $this;
|
||||
}
|
||||
|
||||
function attachment($name, $content, $content_type)
|
||||
{
|
||||
$this->data['Attachments'][$this->attachment_count]['Name'] = $name;
|
||||
$this->data['Attachments'][$this->attachment_count]['ContentType'] = $content_type;
|
||||
|
||||
// Check if our content is already base64 encoded or not
|
||||
if( ! base64_decode($content, true))
|
||||
$this->data['Attachments'][$this->attachment_count]['Content'] = base64_encode($content);
|
||||
else
|
||||
$this->data['Attachments'][$this->attachment_count]['Content'] = $content;
|
||||
|
||||
// Up our attachment counter
|
||||
$this->attachment_count++;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
<?
|
||||
// make sure this is loaded from teh web
|
||||
if (!defined('SECURITY')) exit('404');
|
||||
|
||||
// provide the path to Aterna's block_explorer.php here
|
||||
$PATH_ATERNA = '/home/ubuntu/cron/release/florincoin_block_explorer031/';
|
||||
|
||||
// include stuff
|
||||
require ($PATH_ATERNA . 'class/florin_rpc.php');
|
||||
require ($PATH_ATERNA . 'api/block_explorer.php');
|
||||
$setup_php = ($PATH_ATERNA . 'setup/setup.php');
|
||||
|
||||
// create objects
|
||||
$r = new florin_RPC_client($setup_php, 0);
|
||||
$f = new block_explorer($setup_php, $r);
|
||||
|
||||
|
||||
// substring length for addresses
|
||||
DEFINE('ADDRESS_SUBSTR_LENGTH', 10);
|
||||
|
||||
// substring length for transaction ID
|
||||
$web_config['txid_substr_length'] = 12;
|
||||
|
||||
// substring length for blocks
|
||||
$web_config['block_substr_length'] = 12;
|
||||
|
||||
// substring length for inout table
|
||||
DEFINE('INOUT_SUBSTR_LENGTH', 64);
|
||||
?>
|
||||
@ -1,504 +0,0 @@
|
||||
<?
|
||||
// metacoin 2014
|
||||
|
||||
// floexplorer.php
|
||||
// run this file in a cron or the provided shell script (or your own method) to constantly update the database
|
||||
DEFINE('SECURITY', 1);
|
||||
require ('florincoin-explorer/class/florin_rpc.php');
|
||||
require ('include2/db.inc.php');
|
||||
|
||||
$r = new florin_RPC_client('florincoin-explorer/setup/setup.php', 1);
|
||||
|
||||
$setup = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$block_parser_dbinfo = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$lovedbh = get_dbh($setup);
|
||||
$block_parser = get_dbh($block_parser_dbinfo);
|
||||
|
||||
|
||||
$ADDRESS = 'F7To9UR9qvnj8QDQ1EPxtSzfSogREmn7HC';
|
||||
$ACCOUNT = '';
|
||||
$CONFIRMS = 0;
|
||||
//$florin_rpc = new florin_RPC_client('setup/setup.php', 1);
|
||||
//$block_parser = new block_parser($florin_rpc, 'setup/setup.php', isset($options['debug']), $options['a']);
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
/* BEGIN */
|
||||
|
||||
check_new_email_user($lovedbh);
|
||||
check_if_we_sent_email();
|
||||
check_user_validation($lovedbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS);
|
||||
check_block_confirms($lovedbh, $r, $block_parser);
|
||||
check_transaction_age();
|
||||
|
||||
/* END */
|
||||
|
||||
$endTime = microtime(true);
|
||||
$elapsed = $endTime - $startTime;
|
||||
//echo "%%%%% Execution time : $elapsed seconds %%%%%\r\n\r\n";
|
||||
|
||||
function check_new_email_user($dbh) {
|
||||
// checks to see if there is a new email submission, in which case a mail is sent out to that user with the token
|
||||
// this function also checks if any users exist with mailsent = 0, which is the flag to re-send an email
|
||||
$q = $dbh->query("select id, token from love where verified = 0 and done = 0 and mailsent = 0 and confirmed = 0");
|
||||
$r = $q->fetchAll(PDO::FETCH_NUM);
|
||||
if (!$r) {}
|
||||
else {
|
||||
foreach ($r as $thing) {
|
||||
echo "!! found a new user who has filled in the form: " . $thing[0] . ") " . $thing[1] . "\n";
|
||||
echo "~~ update love set verified = 1 where id = " . $thing[0] . "\n";
|
||||
$q = $dbh->query("update love set verified = 1 where id = " . $thing[0]);
|
||||
echo "~~ insert into tx (loveid) values (" . $thing[0] . ")\n";
|
||||
$q = $dbh->query("insert into tx (loveid) values (" . $thing[0] . ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function check_if_we_sent_email() {
|
||||
// check our mail API to see if we actually sent an email out or not. resend if we didn't
|
||||
}
|
||||
|
||||
function check_user_validation($dbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS) {
|
||||
|
||||
// find a list of userinfo for users who aren't "done" with this process (They have not been given a txid yet)
|
||||
$q = $dbh->query("select tx.txid, B.id, B.email, B.remail, B.name, B.rname, B.message from tx join (select id, email, remail, name, rname, message from love where verified = 1 and done = 0) as B where B.id = tx.loveid and tx.txid is null");
|
||||
$z = $q->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($z as $userinfo) {
|
||||
$txcomment = "t1:ALOVE>" . $userinfo[6] . "|" . $userinfo[5] . "|" . $userinfo[4];
|
||||
echo "~~~~~ found a new user who has verified their email: " . $userinfo[1] . ") " . $userinfo[2] . "->" . $userinfo[3] . " " . $txcomment . "\n";
|
||||
$txid = check_available_transaction($r, $ACCOUNT, $ADDRESS, $CONFIRMS);
|
||||
if (!$txid) {exit("***** FATAL ERROR: No transaction available to write to blockchain.\n");}
|
||||
|
||||
$newtxid = write_transaction_with_message($txid, $txcomment, $r, $ADDRESS);
|
||||
if (!$newtxid) {exit("***** FATAL ERROR: couldn't write transaction to blockchain. $txid.\n");}
|
||||
|
||||
if (!$dbh->query("update love set done = 1, txid = '$newtxid' where id = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
if (!$dbh->query("update tx set txid = '$newtxid' where loveid = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update tx txid = $txid\n");}
|
||||
|
||||
/*
|
||||
$q2 = $dbh->prepare("update love set txcomment = ? where id = " . ((int)$userinfo[1]));
|
||||
$q2->bindValue(1, $txcomment, strlen($txcomment), PDO::PARAM_STR);
|
||||
if ($q2->execute()) {}
|
||||
else exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
// find all transactions where users have validated their email but haven't been given a txid yet
|
||||
//$q = ("select txid from tx join (select id from love where verified = 1 and done = 0) as B where B.id = tx.loveid");
|
||||
}
|
||||
|
||||
|
||||
function check_transaction_age() {
|
||||
// checks transaction age to see when the transaction request was created. if it's older than a certain age, we must create the transaction again
|
||||
// *** ONLY IF IT ISN'T IN THE MEMPOOL
|
||||
}
|
||||
|
||||
|
||||
function check_block_confirms($ldbh, $r, $dbh) {
|
||||
//
|
||||
$q = $ldbh->query("select txid, id from love where confirmed = 0 and verified = 1");
|
||||
if ($q) { $z = $q->fetchAll(PDO::FETCH_NUM); }
|
||||
foreach ($z as $userinfo) {
|
||||
$confirmed = check_tx_confirms_rpc($dbh, $r, $userinfo[0]);
|
||||
if ($confirmed) {
|
||||
$ldbh->query("update love set confirmed = 1 where id = " . (int)$userinfo[1]);
|
||||
echo "~~ " . $userinfo[0] . " is now confirmed with 5 confirms.\n";
|
||||
}
|
||||
}
|
||||
|
||||
$q2 = $ldbh->query("select id, email, txid, email, remail, name, rname, message from love where confirmed = 1 and verified = 1 and done = 1");
|
||||
if ($q2) {
|
||||
$z2 = $q2->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($z2 as $userinfo2) {
|
||||
//echo $userinfo2[0] . " (" . $userinfo2[2] . ") confirmed and email is ready to be sent\n";
|
||||
send_final_email($userinfo2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
<?
|
||||
// metacoin 2014
|
||||
|
||||
// floexplorer.php
|
||||
// run this file in a cron or the provided shell script (or your own method) to constantly update the database
|
||||
DEFINE('SECURITY', 1);
|
||||
require ('florincoin-explorer/class/florin_rpc.php');
|
||||
require ('include2/db.inc.php');
|
||||
|
||||
$r = new florin_RPC_client('florincoin-explorer/setup/setup.php', 1);
|
||||
|
||||
$setup = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$block_parser_dbinfo = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$lovedbh = get_dbh($setup);
|
||||
$block_parser = get_dbh($block_parser_dbinfo);
|
||||
|
||||
|
||||
$ADDRESS = 'F7To9UR9qvnj8QDQ1EPxtSzfSogREmn7HC';
|
||||
$ACCOUNT = '';
|
||||
$CONFIRMS = 0;
|
||||
//$florin_rpc = new florin_RPC_client('setup/setup.php', 1);
|
||||
//$block_parser = new block_parser($florin_rpc, 'setup/setup.php', isset($options['debug']), $options['a']);
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
/* BEGIN */
|
||||
|
||||
check_new_email_user($lovedbh);
|
||||
check_if_we_sent_email();
|
||||
check_user_validation($lovedbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS);
|
||||
check_block_confirms($lovedbh, $r, $block_parser);
|
||||
check_transaction_age();
|
||||
|
||||
/* END */
|
||||
|
||||
$endTime = microtime(true);
|
||||
$elapsed = $endTime - $startTime;
|
||||
//echo "%%%%% Execution time : $elapsed seconds %%%%%\r\n\r\n";
|
||||
|
||||
function check_new_email_user($dbh) {
|
||||
// checks to see if there is a new email submission, in which case a mail is sent out to that user with the token
|
||||
// this function also checks if any users exist with mailsent = 0, which is the flag to re-send an email
|
||||
$q = $dbh->query("select id, token from love where verified = 0 and done = 0 and mailsent = 0 and confirmed = 0");
|
||||
$r = $q->fetchAll(PDO::FETCH_NUM);
|
||||
if (!$r) {}
|
||||
else {
|
||||
foreach ($r as $thing) {
|
||||
echo "!! found a new user who has filled in the form: " . $thing[0] . ") " . $thing[1] . "\n";
|
||||
echo "~~ update love set verified = 1 where id = " . $thing[0] . "\n";
|
||||
$q = $dbh->query("update love set verified = 1 where id = " . $thing[0]);
|
||||
echo "~~ insert into tx (loveid) values (" . $thing[0] . ")\n";
|
||||
$q = $dbh->query("insert into tx (loveid) values (" . $thing[0] . ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function check_if_we_sent_email() {
|
||||
// check our mail API to see if we actually sent an email out or not. resend if we didn't
|
||||
}
|
||||
|
||||
function check_user_validation($dbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS) {
|
||||
|
||||
// find a list of userinfo for users who aren't "done" with this process (They have not been given a txid yet)
|
||||
$q = $dbh->query("select tx.txid, B.id, B.email, B.remail, B.name, B.rname, B.message from tx join (select id, email, remail, name, rname, message from love where verified = 1 and done = 0) as B where B.id = tx.loveid and tx.txid is null");
|
||||
$z = $q->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($z as $userinfo) {
|
||||
$txcomment = "t1:ALOVE>" . $userinfo[6] . "|" . $userinfo[5] . "|" . $userinfo[4];
|
||||
echo "~~~~~ found a new user who has verified their email: " . $userinfo[1] . ") " . $userinfo[2] . "->" . $userinfo[3] . " " . $txcomment . "\n";
|
||||
$txid = check_available_transaction($r, $ACCOUNT, $ADDRESS, $CONFIRMS);
|
||||
if (!$txid) {exit("***** FATAL ERROR: No transaction available to write to blockchain.\n");}
|
||||
|
||||
$newtxid = write_transaction_with_message($txid, $txcomment, $r, $ADDRESS);
|
||||
if (!$newtxid) {exit("***** FATAL ERROR: couldn't write transaction to blockchain. $txid.\n");}
|
||||
|
||||
if (!$dbh->query("update love set done = 1, txid = '$newtxid' where id = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
if (!$dbh->query("update tx set txid = '$newtxid' where loveid = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update tx txid = $txid\n");}
|
||||
|
||||
/*
|
||||
$q2 = $dbh->prepare("update love set txcomment = ? where id = " . ((int)$userinfo[1]));
|
||||
$q2->bindValue(1, $txcomment, strlen($txcomment), PDO::PARAM_STR);
|
||||
if ($q2->execute()) {}
|
||||
else exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
// find all transactions where users have validated their email but haven't been given a txid yet
|
||||
//$q = ("select txid from tx join (select id from love where verified = 1 and done = 0) as B where B.id = tx.loveid");
|
||||
}
|
||||
|
||||
|
||||
function check_transaction_age() {
|
||||
// checks transaction age to see when the transaction request was created. if it's older than a certain age, we must create the transaction again
|
||||
// *** ONLY IF IT ISN'T IN THE MEMPOOL
|
||||
}
|
||||
|
||||
|
||||
function check_block_confirms($ldbh, $r, $dbh) {
|
||||
//
|
||||
$q = $ldbh->query("select txid, id from love where confirmed = 0 and verified = 1");
|
||||
if ($q) { $z = $q->fetchAll(PDO::FETCH_NUM); }
|
||||
foreach ($z as $userinfo) {
|
||||
$confirmed = check_tx_confirms_rpc($dbh, $r, $userinfo[0]);
|
||||
if ($confirmed) {
|
||||
$ldbh->query("update love set confirmed = 1 where id = " . (int)$userinfo[1]);
|
||||
echo "~~ " . $userinfo[0] . " is now confirmed with 5 confirms.\n";
|
||||
}
|
||||
}
|
||||
|
||||
$q2 = $ldbh->query("select id, email, txid, email, remail, name, rname, message from love where confirmed = 1 and verified = 1 and done = 1");
|
||||
if ($q2) {
|
||||
$z2 = $q2->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($z2 as $userinfo2) {
|
||||
//echo $userinfo2[0] . " (" . $userinfo2[2] . ") confirmed and email is ready to be sent\n";
|
||||
send_final_email($userinfo2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
<?
|
||||
// metacoin 2014
|
||||
|
||||
// floexplorer.php
|
||||
// run this file in a cron or the provided shell script (or your own method) to constantly update the database
|
||||
DEFINE('SECURITY', 1);
|
||||
require ('florincoin-explorer/class/florin_rpc.php');
|
||||
require ('include2/db.inc.php');
|
||||
|
||||
$r = new florin_RPC_client('florincoin-explorer/setup/setup.php', 1);
|
||||
|
||||
$setup = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$block_parser_dbinfo = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$lovedbh = get_dbh($setup);
|
||||
$block_parser = get_dbh($block_parser_dbinfo);
|
||||
|
||||
|
||||
$ADDRESS = 'F7To9UR9qvnj8QDQ1EPxtSzfSogREmn7HC';
|
||||
$ACCOUNT = '';
|
||||
$CONFIRMS = 0;
|
||||
//$florin_rpc = new florin_RPC_client('setup/setup.php', 1);
|
||||
//$block_parser = new block_parser($florin_rpc, 'setup/setup.php', isset($options['debug']), $options['a']);
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
/* BEGIN */
|
||||
|
||||
check_new_email_user($lovedbh);
|
||||
check_if_we_sent_email();
|
||||
check_user_validation($lovedbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS);
|
||||
check_block_confirms($lovedbh, $r, $block_parser);
|
||||
check_transaction_age();
|
||||
|
||||
/* END */
|
||||
|
||||
$endTime = microtime(true);
|
||||
$elapsed = $endTime - $startTime;
|
||||
//echo "%%%%% Execution time : $elapsed seconds %%%%%\r\n\r\n";
|
||||
|
||||
function check_new_email_user($dbh) {
|
||||
// checks to see if there is a new email submission, in which case a mail is sent out to that user with the token
|
||||
// this function also checks if any users exist with mailsent = 0, which is the flag to re-send an email
|
||||
$q = $dbh->query("select id, token from love where verified = 0 and done = 0 and mailsent = 0 and confirmed = 0");
|
||||
$r = $q->fetchAll(PDO::FETCH_NUM);
|
||||
if (!$r) {}
|
||||
else {
|
||||
foreach ($r as $thing) {
|
||||
echo "!! found a new user who has filled in the form: " . $thing[0] . ") " . $thing[1] . "\n";
|
||||
echo "~~ update love set verified = 1 where id = " . $thing[0] . "\n";
|
||||
$q = $dbh->query("update love set verified = 1 where id = " . $thing[0]);
|
||||
echo "~~ insert into tx (loveid) values (" . $thing[0] . ")\n";
|
||||
$q = $dbh->query("insert into tx (loveid) values (" . $thing[0] . ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function check_if_we_sent_email() {
|
||||
// check our mail API to see if we actually sent an email out or not. resend if we didn't
|
||||
}
|
||||
|
||||
function check_user_validation($dbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS) {
|
||||
|
||||
// find a list of userinfo for users who aren't "done" with this process (They have not been given a txid yet)
|
||||
$q = $dbh->query("select tx.txid, B.id, B.email, B.remail, B.name, B.rname, B.message from tx join (select id, email, remail, name, rname, message from love where verified = 1 and done = 0) as B where B.id = tx.loveid and tx.txid is null");
|
||||
$z = $q->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($z as $userinfo) {
|
||||
$txcomment = "t1:ALOVE>" . $userinfo[6] . "|" . $userinfo[5] . "|" . $userinfo[4];
|
||||
echo "~~~~~ found a new user who has verified their email: " . $userinfo[1] . ") " . $userinfo[2] . "->" . $userinfo[3] . " " . $txcomment . "\n";
|
||||
$txid = check_available_transaction($r, $ACCOUNT, $ADDRESS, $CONFIRMS);
|
||||
if (!$txid) {exit("***** FATAL ERROR: No transaction available to write to blockchain.\n");}
|
||||
|
||||
$newtxid = write_transaction_with_message($txid, $txcomment, $r, $ADDRESS);
|
||||
if (!$newtxid) {exit("***** FATAL ERROR: couldn't write transaction to blockchain. $txid.\n");}
|
||||
|
||||
if (!$dbh->query("update love set done = 1, txid = '$newtxid' where id = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
if (!$dbh->query("update tx set txid = '$newtxid' where loveid = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update tx txid = $txid\n");}
|
||||
|
||||
/*
|
||||
$q2 = $dbh->prepare("update love set txcomment = ? where id = " . ((int)$userinfo[1]));
|
||||
$q2->bindValue(1, $txcomment, strlen($txcomment), PDO::PARAM_STR);
|
||||
if ($q2->execute()) {}
|
||||
else exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
// find all transactions where users have validated their email but haven't been given a txid yet
|
||||
//$q = ("select txid from tx join (select id from love where verified = 1 and done = 0) as B where B.id = tx.loveid");
|
||||
}
|
||||
|
||||
|
||||
function check_transaction_age() {
|
||||
// checks transaction age to see when the transaction request was created. if it's older than a certain age, we must create the transaction again
|
||||
// *** ONLY IF IT ISN'T IN THE MEMPOOL
|
||||
}
|
||||
|
||||
|
||||
function check_block_confirms($ldbh, $r, $dbh) {
|
||||
//
|
||||
$q = $ldbh->query("select txid, id from love where confirmed = 0 and verified = 1");
|
||||
if ($q) { $z = $q->fetchAll(PDO::FETCH_NUM); }
|
||||
foreach ($z as $userinfo) {
|
||||
$confirmed = check_tx_confirms_rpc($dbh, $r, $userinfo[0]);
|
||||
if ($confirmed) {
|
||||
$ldbh->query("update love set confirmed = 1 where id = " . (int)$userinfo[1]);
|
||||
echo "~~ " . $userinfo[0] . " is now confirmed with 5 confirms.\n";
|
||||
}
|
||||
}
|
||||
|
||||
$q2 = $ldbh->query("select id, email, txid, email, remail, name, rname, message from love where confirmed = 1 and verified = 1 and done = 1");
|
||||
if ($q2) {
|
||||
$z2 = $q2->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($z2 as $userinfo2) {
|
||||
//echo $userinfo2[0] . " (" . $userinfo2[2] . ") confirmed and email is ready to be sent\n";
|
||||
send_final_email($userinfo2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
<?
|
||||
// metacoin 2014
|
||||
|
||||
// floexplorer.php
|
||||
// run this file in a cron or the provided shell script (or your own method) to constantly update the database
|
||||
DEFINE('SECURITY', 1);
|
||||
require ('florincoin-explorer/class/florin_rpc.php');
|
||||
require ('include2/db.inc.php');
|
||||
|
||||
$r = new florin_RPC_client('florincoin-explorer/setup/setup.php', 1);
|
||||
|
||||
$setup = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$block_parser_dbinfo = array('DB_HOST'=>'', 'DB_PORT'=>'', 'DB_NAME'=>'', 'DB_USER'=>'', 'DB_PASS'=>'');
|
||||
$lovedbh = get_dbh($setup);
|
||||
$block_parser = get_dbh($block_parser_dbinfo);
|
||||
|
||||
|
||||
$ADDRESS = 'F7To9UR9qvnj8QDQ1EPxtSzfSogREmn7HC';
|
||||
$ACCOUNT = '';
|
||||
$CONFIRMS = 0;
|
||||
//$florin_rpc = new florin_RPC_client('setup/setup.php', 1);
|
||||
//$block_parser = new block_parser($florin_rpc, 'setup/setup.php', isset($options['debug']), $options['a']);
|
||||
|
||||
$startTime = microtime(true);
|
||||
|
||||
/* BEGIN */
|
||||
|
||||
check_new_email_user($lovedbh);
|
||||
check_if_we_sent_email();
|
||||
check_user_validation($lovedbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS);
|
||||
check_block_confirms($lovedbh, $r, $block_parser);
|
||||
check_transaction_age();
|
||||
|
||||
/* END */
|
||||
|
||||
$endTime = microtime(true);
|
||||
$elapsed = $endTime - $startTime;
|
||||
//echo "%%%%% Execution time : $elapsed seconds %%%%%\r\n\r\n";
|
||||
|
||||
function check_new_email_user($dbh) {
|
||||
// checks to see if there is a new email submission, in which case a mail is sent out to that user with the token
|
||||
// this function also checks if any users exist with mailsent = 0, which is the flag to re-send an email
|
||||
$q = $dbh->query("select id, token from love where verified = 0 and done = 0 and mailsent = 0 and confirmed = 0");
|
||||
$r = $q->fetchAll(PDO::FETCH_NUM);
|
||||
if (!$r) {}
|
||||
else {
|
||||
foreach ($r as $thing) {
|
||||
echo "!! found a new user who has filled in the form: " . $thing[0] . ") " . $thing[1] . "\n";
|
||||
echo "~~ update love set verified = 1 where id = " . $thing[0] . "\n";
|
||||
$q = $dbh->query("update love set verified = 1 where id = " . $thing[0]);
|
||||
echo "~~ insert into tx (loveid) values (" . $thing[0] . ")\n";
|
||||
$q = $dbh->query("insert into tx (loveid) values (" . $thing[0] . ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function check_if_we_sent_email() {
|
||||
// check our mail API to see if we actually sent an email out or not. resend if we didn't
|
||||
}
|
||||
|
||||
function check_user_validation($dbh, $r, $ADDRESS, $ACCOUNT, $CONFIRMS) {
|
||||
|
||||
// find a list of userinfo for users who aren't "done" with this process (They have not been given a txid yet)
|
||||
$q = $dbh->query("select tx.txid, B.id, B.email, B.remail, B.name, B.rname, B.message from tx join (select id, email, remail, name, rname, message from love where verified = 1 and done = 0) as B where B.id = tx.loveid and tx.txid is null");
|
||||
$z = $q->fetchAll(PDO::FETCH_NUM);
|
||||
foreach ($z as $userinfo) {
|
||||
$txcomment = "t1:ALOVE>" . $userinfo[6] . "|" . $userinfo[5] . "|" . $userinfo[4];
|
||||
echo "~~~~~ found a new user who has verified their email: " . $userinfo[1] . ") " . $userinfo[2] . "->" . $userinfo[3] . " " . $txcomment . "\n";
|
||||
$txid = check_available_transaction($r, $ACCOUNT, $ADDRESS, $CONFIRMS);
|
||||
if (!$txid) {exit("***** FATAL ERROR: No transaction available to write to blockchain.\n");}
|
||||
|
||||
$newtxid = write_transaction_with_message($txid, $txcomment, $r, $ADDRESS);
|
||||
if (!$newtxid) {exit("***** FATAL ERROR: couldn't write transaction to blockchain. $txid.\n");}
|
||||
|
||||
if (!$dbh->query("update love set done = 1, txid = '$newtxid' where id = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
if (!$dbh->query("update tx set txid = '$newtxid' where loveid = " . ((int)$userinfo[1]))) {exit("***** FATAL ERROR: couldn't update tx txid = $txid\n");}
|
||||
|
||||
/*
|
||||
$q2 = $dbh->prepare("update love set txcomment = ? where id = " . ((int)$userinfo[1]));
|
||||
$q2->bindValue(1, $txcomment, strlen($txcomment), PDO::PARAM_STR);
|
||||
if ($q2->execute()) {}
|
||||
else exit("***** FATAL ERROR: couldn't update love done = 1 on $txid\n");}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
// find all transactions where users have validated their email but haven't been given a txid yet
|
||||
//$q = ("select txid from tx join (select id from love where verified = 1 and done = 0) as B where B.id = tx.loveid");
|
||||
}
|
||||
|
||||
|
||||
function check_transaction_age() {
|
||||
// checks transaction age to see when the transaction request was created. if it's older than a certain age, we must create the transaction again
|
||||
// *** ONLY IF IT ISN'T IN THE MEMPOOL
|
||||
}
|
||||
|
||||
|
||||
function check_block_confirms($ldbh, $r, $dbh) {
|
||||
//
|
||||
$q = $ldbh->query("select txid, id from love where confirmed = 0 and verified = 1");
|
||||
if ($q) { $z = $q->fetchAll(PDO::FETCH_NUM); }
|
||||
foreach ($z as $userinfo) {
|
||||
$confirmed = check_tx_confirms_rpc($dbh, $r, $userinfo[0]);
|
||||
if ($confirmed) {
|
||||
$ldbh->query("update love set confirmed = 1 where id = " . (int)$userinfo[1]);
|
||||
echo "~~ " . $userinfo[0] . " is now confirmed with 5 confirms.\n";
|
||||
}
|
||||
}
|
||||
|
||||
$q2 = $ldbh->query("select id, email, txid, email, remail, name, rname, message from love where confirmed = 1 and verified = 1 and done = 1");
|
||||
if ($q2) {
|
||||
$z2 = $q2->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($z2 as $userinfo2) {
|
||||
//echo $userinfo2[0] . " (" . $userinfo2[2] . ") confirmed and email is ready to be sent\n";
|
||||
send_final_email($userinfo2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
./auto-aterna-love.sh: 5: ./auto-aterna-love.sh: php: not found
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 568 B |
@ -1,65 +0,0 @@
|
||||
|
||||
import base64
|
||||
import os
|
||||
from Crypto.Cipher import AES
|
||||
"""
|
||||
This Module is not used by default it is included if we wish to encrypt/decrpyt the data
|
||||
while transferring over block chain.
|
||||
|
||||
Encryption Technique Used: Advanced Encryption Standard (AES)
|
||||
Key Length: 32
|
||||
|
||||
Usage:
|
||||
cipher_text = CryptTools.encrypt(plain_text,key)
|
||||
plain_text = CryptTools.decrypt(ciper_text,key)
|
||||
|
||||
For random key generation use: CryptTools.keyGen()
|
||||
"""
|
||||
|
||||
def pad(data):
|
||||
"""
|
||||
Function Name: pad
|
||||
|
||||
Function use: pad the data for encryption
|
||||
"""
|
||||
padding = 16 - len(data) % 16
|
||||
return data + padding * chr(padding+97)
|
||||
|
||||
def unpad(data):
|
||||
"""
|
||||
Function Name: unpad
|
||||
|
||||
Function use: unpad the data for decryption
|
||||
"""
|
||||
|
||||
data = str(data)
|
||||
padding = ord(data[-2]) - 96
|
||||
return data[2:-padding]
|
||||
|
||||
def keyGen():
|
||||
# Generating random key of 32 bytes
|
||||
key = os.urandom(32)
|
||||
return key
|
||||
|
||||
|
||||
def encryptMsg(plaintext, key):
|
||||
# Genarating Initialization vector for AES (16 bytes)
|
||||
IV = os.urandom(16)
|
||||
# Encrypting The plaintext
|
||||
cipher = AES.new(key, AES.MODE_CBC, IV)
|
||||
plaintext=base64.b64encode(plaintext.encode('utf-8')).decode('utf-8')
|
||||
ciphertext = cipher.encrypt(pad(plaintext).encode('utf-8'))
|
||||
# Append IV and Ciphertext
|
||||
ciphertext = base64.b64encode(IV).decode('utf-8') + base64.b64encode(ciphertext).decode('utf-8')
|
||||
return ciphertext
|
||||
|
||||
|
||||
def decryptMsg(ciphertext, key):
|
||||
# Initialization vector in AES should be 16 bytes
|
||||
IV = base64.b64decode(ciphertext[:24])
|
||||
ciphertext=base64.b64decode(ciphertext[24:])
|
||||
# Creation of encryptor and decryptor object using above details
|
||||
cipher = AES.new(key, AES.MODE_CBC, IV)
|
||||
plaintext=unpad(cipher.decrypt(ciphertext))
|
||||
plaintext = (base64.b64decode(plaintext)).decode('utf-8')
|
||||
return plaintext
|
||||
@ -1 +0,0 @@
|
||||
from .CryptTools import *
|
||||
@ -1,117 +0,0 @@
|
||||
""" The DataCenter module uses sqlite3 for storage of Data By default."""
|
||||
import sqlite3
|
||||
conn = sqlite3.connect("Intern.db")
|
||||
def checkState():
|
||||
"""
|
||||
Function Name: checkState.
|
||||
|
||||
Function Use: Rectify Integerity of the DataBase.
|
||||
"""
|
||||
try:
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT * from INTER_TAB")
|
||||
except:
|
||||
c = conn.cursor()
|
||||
c.execute("CREATE TABLE INTER_TAB(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,user_name TEXT)")
|
||||
|
||||
try:
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT * FROM RATING_TAB")
|
||||
except:
|
||||
c = conn.cursor()
|
||||
c.execute("CREATE TABLE RATING_TAB(user_name TEXT,rating INTEGER, FOREIGN KEY(user_name) REFERENCES INTER_TAB(user_name))")
|
||||
|
||||
|
||||
def readAll():
|
||||
"""
|
||||
Function Name: readAll.
|
||||
|
||||
Function use: To Retrieve all the relavant Interns details.
|
||||
"""
|
||||
|
||||
c = conn.cursor()
|
||||
data = c.execute("SELECT name,user_name FROM INTER_TAB").fetchall()
|
||||
conn.commit()
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def write(intern_name,intern_user_name):
|
||||
"""
|
||||
Function Name: write.
|
||||
|
||||
Function Use: writes the Intern's Data to the DataBase.
|
||||
"""
|
||||
c = conn.cursor()
|
||||
c.execute("INSERT INTO INTER_TAB(name,user_name) VALUES(?,?)",(intern_name,intern_user_name))
|
||||
|
||||
conn.commit()
|
||||
|
||||
def delete(intern_name):
|
||||
"""
|
||||
Function Name: delete.
|
||||
|
||||
Function Use: Removes Intern data from the DataBase.
|
||||
"""
|
||||
c = conn.cursor()
|
||||
c.execute("DELETE FROM INTER_TAB WHERE user_name=?",(intern_name,))
|
||||
conn.commit()
|
||||
|
||||
|
||||
def update(intern_name,intern_user_name):
|
||||
#Updates Existing - Intern Details - Not Used Currently
|
||||
c = conn.cursor()
|
||||
c.execute("UPDATE INTER_TAB SET user_name = ? WHERE intern_name = ?",(intern_name,intern_user_name))
|
||||
conn.commit()
|
||||
|
||||
|
||||
def insertRating(user_name,rating):
|
||||
"""
|
||||
Function name:insert Rating.
|
||||
|
||||
Function use: Adds/Updates ratings of the Intern's in the DB.
|
||||
"""
|
||||
|
||||
c = conn.cursor()
|
||||
try:
|
||||
k = c.execute("SELECT * FROM RATING_TAB WHERE user_name = ? ",(user_name,)).fetchone()
|
||||
if not k:
|
||||
raise sqlite3.OperationalError
|
||||
c.execute("UPDATE RATING_TAB SET rating = ? WHERE user_name = ?",(rating,user_name))
|
||||
conn.commit()
|
||||
except sqlite3.OperationalError:
|
||||
c.execute("INSERT INTO RATING_TAB(user_name,rating) VALUES(?,?)",(user_name,rating))
|
||||
conn.commit()
|
||||
|
||||
|
||||
def clearRatings():
|
||||
"""
|
||||
Function Name:clearRatings.
|
||||
|
||||
Function Use:Delete Unwanted Ratings from the DataBase.
|
||||
|
||||
"""
|
||||
c = conn.cursor()
|
||||
c.execute("DELETE FROM RATING_TAB")
|
||||
|
||||
|
||||
def retrieveRating():
|
||||
"""
|
||||
Function Name: retrieveRating
|
||||
|
||||
Function use: Get the Rating from Rating DataBase.
|
||||
"""
|
||||
c = conn.cursor()
|
||||
data = c.execute("SELECT * FROM RATING_TAB").fetchall()
|
||||
return data
|
||||
|
||||
|
||||
def removeRating(user_name):
|
||||
"""
|
||||
Function Name: removeRating
|
||||
|
||||
Function use: Delete a specific user rating Data.
|
||||
"""
|
||||
c = conn.cursor()
|
||||
c.execute("DELETE FROM RATING_TAB where user_name = ?",(user_name,))
|
||||
conn.commit()
|
||||
@ -1 +0,0 @@
|
||||
from .DataCenter import *
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,28 +0,0 @@
|
||||
# FloRate-Dapp
|
||||
This D-App is based on Flo Block Chain and is used to communicate the progress of Interns in the form of Rating.<br />
|
||||
<b>Usage</b><br />
|
||||
To use the application we use the command python3 rating-client.py<br />
|
||||
After Starting GUI choose the role:<br />
|
||||
<ul>
|
||||
<li>
|
||||
If role is Employee We need to create Ratings so that they are in desired writting format.<br />
|
||||
The Intern Create Ratings window contains 2 parts<br />
|
||||
<ul>
|
||||
<li>
|
||||
Intern Data: Here we choose the required Interns to be rated and press the right arrow Button<br />We then
|
||||
Enter the Ratings and submit
|
||||
</li>
|
||||
<li>
|
||||
Rating Data: Here we find all the assigned Ratings displayed and when we find they are good we finalize them by pressing on finalize button
|
||||
</li>
|
||||
</ul>
|
||||
Once The Ratings are Written we enter the Transaction Id and click post rating button to Post the ratings.
|
||||
After this the trasnaction id to be shared with interns is displayed on CLI as well as saved onto RatingData.txt
|
||||
</li>
|
||||
<li>
|
||||
If the role in Intern we just Enter the Transaction id provided by Employeer and retrieve the Ratings by clicking Fetch Rating Button
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 572 B |
@ -1,51 +0,0 @@
|
||||
|
||||
from tkinter import * # from x import * is bad practice
|
||||
from tkinter import ttk
|
||||
|
||||
# http://tkinter.unpythonic.net/wiki/VerticalScrolledFrame
|
||||
|
||||
class VerticalScrolledFrame(Frame):
|
||||
"""A pure Tkinter scrollable frame that actually works!
|
||||
* Use the 'interior' attribute to place widgets inside the scrollable frame
|
||||
* Construct and pack/place/grid normally
|
||||
* This frame only allows vertical scrolling
|
||||
"""
|
||||
def __init__(self, parent, *args, **kw):
|
||||
Frame.__init__(self, parent, *args, **kw)
|
||||
|
||||
# create a canvas object and a vertical scrollbar for scrolling it
|
||||
vscrollbar = Scrollbar(self, orient=VERTICAL)
|
||||
vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE)
|
||||
canvas = Canvas(self, bd=0, highlightthickness=0,
|
||||
yscrollcommand=vscrollbar.set)
|
||||
canvas.pack(side=LEFT, fill=BOTH, expand=TRUE)
|
||||
vscrollbar.config(command=canvas.yview)
|
||||
|
||||
# reset the view
|
||||
canvas.xview_moveto(0)
|
||||
canvas.yview_moveto(0)
|
||||
|
||||
# create a frame inside the canvas which will be scrolled with it
|
||||
self.interior = interior = Frame(canvas)
|
||||
interior_id = canvas.create_window(0, 0, window=interior,
|
||||
anchor=NW)
|
||||
def _on_mousewheel(event):
|
||||
canvas.yview_scroll(int(-1 * (event.delta / 120)), "units")
|
||||
self.interior.bind_all("<MouseWheel>", _on_mousewheel)
|
||||
|
||||
# track changes to the canvas and frame width and sync them,
|
||||
# also updating the scrollbar
|
||||
def _configure_interior(event):
|
||||
# update the scrollbars to match the size of the inner frame
|
||||
size = (interior.winfo_reqwidth(), interior.winfo_reqheight())
|
||||
canvas.config(scrollregion="0 0 %s %s" % size)
|
||||
if interior.winfo_reqwidth() != canvas.winfo_width():
|
||||
# update the canvas's width to fit the inner frame
|
||||
canvas.config(width=interior.winfo_reqwidth())
|
||||
interior.bind('<Configure>', _configure_interior)
|
||||
|
||||
def _configure_canvas(event):
|
||||
if interior.winfo_reqwidth() != canvas.winfo_width():
|
||||
# update the inner frame's width to fill the canvas
|
||||
canvas.itemconfigure(interior_id, width=canvas.winfo_width())
|
||||
canvas.bind('<Configure>', _configure_canvas)
|
||||
@ -1,39 +0,0 @@
|
||||
import subprocess
|
||||
import json
|
||||
|
||||
|
||||
def writeDatatoBlockchain(text,receiver,amt):
|
||||
"""
|
||||
Function Name: writeDatatoBlockChain
|
||||
|
||||
Function use: write the recieved Data to the Block-Chain with a specified amount amt charge
|
||||
"""
|
||||
|
||||
txid = subprocess.check_output(["flo-cli","--testnet", "sendtoaddress",receiver,str(amt),'""','""',"true","false","10",'UNSET',str(text)])
|
||||
txid = str(txid)
|
||||
txid = txid[2:-3]
|
||||
return txid
|
||||
|
||||
def readUnitFromBlockchain(txid):
|
||||
#Reads Unit Data from Block Chain
|
||||
rawtx = subprocess.check_output(["flo-cli","--testnet", "getrawtransaction", str(txid)])
|
||||
rawtx = str(rawtx)
|
||||
rawtx = rawtx[2:-3]
|
||||
tx = subprocess.check_output(["flo-cli","--testnet", "decoderawtransaction", str(rawtx)])
|
||||
content = json.loads(tx)
|
||||
text = content['floData']
|
||||
return text
|
||||
|
||||
def readDatafromBlockchain(cursor):
|
||||
#Read a Block of data from Blockchain
|
||||
text = []
|
||||
cursor_data = readUnitFromBlockchain(cursor)
|
||||
while(cursor_data[:5]=='next:'):
|
||||
cursor = cursor_data[5:69]
|
||||
#print("fetching this transaction->>"+cursor)
|
||||
text.append(cursor_data[70:])
|
||||
cursor_data = readUnitFromBlockchain(cursor)
|
||||
text.append(cursor_data)
|
||||
#print(text)
|
||||
text=('').join(text)
|
||||
return text
|
||||
@ -1 +0,0 @@
|
||||
from .TM import *
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,797 +0,0 @@
|
||||
(['/root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py'],
|
||||
['/root/Downloads/FLO-appStore-master/apps/FloRate',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate'],
|
||||
['codecs'],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
False,
|
||||
False,
|
||||
'3.6.6 (default, Jun 27 2018, 14:44:17) \n[GCC 8.1.0]',
|
||||
[('pyi_rth__tkinter',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py',
|
||||
'PYSOURCE'),
|
||||
('rating-client',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py',
|
||||
'PYSOURCE')],
|
||||
[('posixpath', '/usr/lib/python3.6/posixpath.py', 'PYMODULE'),
|
||||
('_strptime', '/usr/lib/python3.6/_strptime.py', 'PYMODULE'),
|
||||
('datetime', '/usr/lib/python3.6/datetime.py', 'PYMODULE'),
|
||||
('stringprep', '/usr/lib/python3.6/stringprep.py', 'PYMODULE'),
|
||||
('fnmatch', '/usr/lib/python3.6/fnmatch.py', 'PYMODULE'),
|
||||
('struct', '/usr/lib/python3.6/struct.py', 'PYMODULE'),
|
||||
('_compat_pickle', '/usr/lib/python3.6/_compat_pickle.py', 'PYMODULE'),
|
||||
('__future__', '/usr/lib/python3.6/__future__.py', 'PYMODULE'),
|
||||
('difflib', '/usr/lib/python3.6/difflib.py', 'PYMODULE'),
|
||||
('ast', '/usr/lib/python3.6/ast.py', 'PYMODULE'),
|
||||
('inspect', '/usr/lib/python3.6/inspect.py', 'PYMODULE'),
|
||||
('cmd', '/usr/lib/python3.6/cmd.py', 'PYMODULE'),
|
||||
('bdb', '/usr/lib/python3.6/bdb.py', 'PYMODULE'),
|
||||
('opcode', '/usr/lib/python3.6/opcode.py', 'PYMODULE'),
|
||||
('dis', '/usr/lib/python3.6/dis.py', 'PYMODULE'),
|
||||
('codeop', '/usr/lib/python3.6/codeop.py', 'PYMODULE'),
|
||||
('code', '/usr/lib/python3.6/code.py', 'PYMODULE'),
|
||||
('glob', '/usr/lib/python3.6/glob.py', 'PYMODULE'),
|
||||
('shlex', '/usr/lib/python3.6/shlex.py', 'PYMODULE'),
|
||||
('importlib._bootstrap',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap.py',
|
||||
'PYMODULE'),
|
||||
('importlib._bootstrap_external',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap_external.py',
|
||||
'PYMODULE'),
|
||||
('importlib.machinery',
|
||||
'/usr/lib/python3.6/importlib/machinery.py',
|
||||
'PYMODULE'),
|
||||
('importlib.util', '/usr/lib/python3.6/importlib/util.py', 'PYMODULE'),
|
||||
('importlib.abc', '/usr/lib/python3.6/importlib/abc.py', 'PYMODULE'),
|
||||
('importlib', '/usr/lib/python3.6/importlib/__init__.py', 'PYMODULE'),
|
||||
('pkgutil', '/usr/lib/python3.6/pkgutil.py', 'PYMODULE'),
|
||||
('xml', '/usr/lib/python3.6/xml/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.expatreader',
|
||||
'/usr/lib/python3.6/xml/sax/expatreader.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.saxutils', '/usr/lib/python3.6/xml/sax/saxutils.py', 'PYMODULE'),
|
||||
('urllib.request', '/usr/lib/python3.6/urllib/request.py', 'PYMODULE'),
|
||||
('getpass', '/usr/lib/python3.6/getpass.py', 'PYMODULE'),
|
||||
('nturl2path', '/usr/lib/python3.6/nturl2path.py', 'PYMODULE'),
|
||||
('ftplib', '/usr/lib/python3.6/ftplib.py', 'PYMODULE'),
|
||||
('netrc', '/usr/lib/python3.6/netrc.py', 'PYMODULE'),
|
||||
('http.cookiejar', '/usr/lib/python3.6/http/cookiejar.py', 'PYMODULE'),
|
||||
('urllib.response', '/usr/lib/python3.6/urllib/response.py', 'PYMODULE'),
|
||||
('urllib.error', '/usr/lib/python3.6/urllib/error.py', 'PYMODULE'),
|
||||
('xml.sax', '/usr/lib/python3.6/xml/sax/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.handler', '/usr/lib/python3.6/xml/sax/handler.py', 'PYMODULE'),
|
||||
('xml.sax._exceptions',
|
||||
'/usr/lib/python3.6/xml/sax/_exceptions.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.xmlreader', '/usr/lib/python3.6/xml/sax/xmlreader.py', 'PYMODULE'),
|
||||
('xml.parsers', '/usr/lib/python3.6/xml/parsers/__init__.py', 'PYMODULE'),
|
||||
('xml.parsers.expat', '/usr/lib/python3.6/xml/parsers/expat.py', 'PYMODULE'),
|
||||
('plistlib', '/usr/lib/python3.6/plistlib.py', 'PYMODULE'),
|
||||
('platform', '/usr/lib/python3.6/platform.py', 'PYMODULE'),
|
||||
('token', '/usr/lib/python3.6/token.py', 'PYMODULE'),
|
||||
('tokenize', '/usr/lib/python3.6/tokenize.py', 'PYMODULE'),
|
||||
('urllib.parse', '/usr/lib/python3.6/urllib/parse.py', 'PYMODULE'),
|
||||
('tempfile', '/usr/lib/python3.6/tempfile.py', 'PYMODULE'),
|
||||
('tty', '/usr/lib/python3.6/tty.py', 'PYMODULE'),
|
||||
('pydoc_data', '/usr/lib/python3.6/pydoc_data/__init__.py', 'PYMODULE'),
|
||||
('pydoc_data.topics', '/usr/lib/python3.6/pydoc_data/topics.py', 'PYMODULE'),
|
||||
('html.entities', '/usr/lib/python3.6/html/entities.py', 'PYMODULE'),
|
||||
('html', '/usr/lib/python3.6/html/__init__.py', 'PYMODULE'),
|
||||
('ipaddress', '/usr/lib/python3.6/ipaddress.py', 'PYMODULE'),
|
||||
('ssl', '/usr/lib/python3.6/ssl.py', 'PYMODULE'),
|
||||
('http.client', '/usr/lib/python3.6/http/client.py', 'PYMODULE'),
|
||||
('mimetypes', '/usr/lib/python3.6/mimetypes.py', 'PYMODULE'),
|
||||
('socketserver', '/usr/lib/python3.6/socketserver.py', 'PYMODULE'),
|
||||
('http', '/usr/lib/python3.6/http/__init__.py', 'PYMODULE'),
|
||||
('http.server', '/usr/lib/python3.6/http/server.py', 'PYMODULE'),
|
||||
('optparse', '/usr/lib/python3.6/optparse.py', 'PYMODULE'),
|
||||
('uu', '/usr/lib/python3.6/uu.py', 'PYMODULE'),
|
||||
('quopri', '/usr/lib/python3.6/quopri.py', 'PYMODULE'),
|
||||
('email.feedparser', '/usr/lib/python3.6/email/feedparser.py', 'PYMODULE'),
|
||||
('email.parser', '/usr/lib/python3.6/email/parser.py', 'PYMODULE'),
|
||||
('email', '/usr/lib/python3.6/email/__init__.py', 'PYMODULE'),
|
||||
('calendar', '/usr/lib/python3.6/calendar.py', 'PYMODULE'),
|
||||
('email._parseaddr', '/usr/lib/python3.6/email/_parseaddr.py', 'PYMODULE'),
|
||||
('email.utils', '/usr/lib/python3.6/email/utils.py', 'PYMODULE'),
|
||||
('email.errors', '/usr/lib/python3.6/email/errors.py', 'PYMODULE'),
|
||||
('email.header', '/usr/lib/python3.6/email/header.py', 'PYMODULE'),
|
||||
('email._policybase', '/usr/lib/python3.6/email/_policybase.py', 'PYMODULE'),
|
||||
('email.base64mime', '/usr/lib/python3.6/email/base64mime.py', 'PYMODULE'),
|
||||
('email.encoders', '/usr/lib/python3.6/email/encoders.py', 'PYMODULE'),
|
||||
('email.charset', '/usr/lib/python3.6/email/charset.py', 'PYMODULE'),
|
||||
('base64', '/usr/lib/python3.6/base64.py', 'PYMODULE'),
|
||||
('email._encoded_words',
|
||||
'/usr/lib/python3.6/email/_encoded_words.py',
|
||||
'PYMODULE'),
|
||||
('hashlib', '/usr/lib/python3.6/hashlib.py', 'PYMODULE'),
|
||||
('bisect', '/usr/lib/python3.6/bisect.py', 'PYMODULE'),
|
||||
('random', '/usr/lib/python3.6/random.py', 'PYMODULE'),
|
||||
('email.generator', '/usr/lib/python3.6/email/generator.py', 'PYMODULE'),
|
||||
('email.iterators', '/usr/lib/python3.6/email/iterators.py', 'PYMODULE'),
|
||||
('urllib', '/usr/lib/python3.6/urllib/__init__.py', 'PYMODULE'),
|
||||
('email._header_value_parser',
|
||||
'/usr/lib/python3.6/email/_header_value_parser.py',
|
||||
'PYMODULE'),
|
||||
('email.headerregistry',
|
||||
'/usr/lib/python3.6/email/headerregistry.py',
|
||||
'PYMODULE'),
|
||||
('email.quoprimime', '/usr/lib/python3.6/email/quoprimime.py', 'PYMODULE'),
|
||||
('email.contentmanager',
|
||||
'/usr/lib/python3.6/email/contentmanager.py',
|
||||
'PYMODULE'),
|
||||
('email.policy', '/usr/lib/python3.6/email/policy.py', 'PYMODULE'),
|
||||
('email.message', '/usr/lib/python3.6/email/message.py', 'PYMODULE'),
|
||||
('bz2', '/usr/lib/python3.6/bz2.py', 'PYMODULE'),
|
||||
('lzma', '/usr/lib/python3.6/lzma.py', 'PYMODULE'),
|
||||
('_compression', '/usr/lib/python3.6/_compression.py', 'PYMODULE'),
|
||||
('gzip', '/usr/lib/python3.6/gzip.py', 'PYMODULE'),
|
||||
('tarfile', '/usr/lib/python3.6/tarfile.py', 'PYMODULE'),
|
||||
('py_compile', '/usr/lib/python3.6/py_compile.py', 'PYMODULE'),
|
||||
('zipfile', '/usr/lib/python3.6/zipfile.py', 'PYMODULE'),
|
||||
('shutil', '/usr/lib/python3.6/shutil.py', 'PYMODULE'),
|
||||
('socket', '/usr/lib/python3.6/socket.py', 'PYMODULE'),
|
||||
('webbrowser', '/usr/lib/python3.6/webbrowser.py', 'PYMODULE'),
|
||||
('pydoc', '/usr/lib/python3.6/pydoc.py', 'PYMODULE'),
|
||||
('getopt', '/usr/lib/python3.6/getopt.py', 'PYMODULE'),
|
||||
('pdb', '/usr/lib/python3.6/pdb.py', 'PYMODULE'),
|
||||
('unittest.util', '/usr/lib/python3.6/unittest/util.py', 'PYMODULE'),
|
||||
('unittest.result', '/usr/lib/python3.6/unittest/result.py', 'PYMODULE'),
|
||||
('logging', '/usr/lib/python3.6/logging/__init__.py', 'PYMODULE'),
|
||||
('unittest.case', '/usr/lib/python3.6/unittest/case.py', 'PYMODULE'),
|
||||
('unittest.suite', '/usr/lib/python3.6/unittest/suite.py', 'PYMODULE'),
|
||||
('unittest.loader', '/usr/lib/python3.6/unittest/loader.py', 'PYMODULE'),
|
||||
('unittest.runner', '/usr/lib/python3.6/unittest/runner.py', 'PYMODULE'),
|
||||
('unittest.main', '/usr/lib/python3.6/unittest/main.py', 'PYMODULE'),
|
||||
('unittest.signals', '/usr/lib/python3.6/unittest/signals.py', 'PYMODULE'),
|
||||
('unittest', '/usr/lib/python3.6/unittest/__init__.py', 'PYMODULE'),
|
||||
('doctest', '/usr/lib/python3.6/doctest.py', 'PYMODULE'),
|
||||
('stat', '/usr/lib/python3.6/stat.py', 'PYMODULE'),
|
||||
('genericpath', '/usr/lib/python3.6/genericpath.py', 'PYMODULE'),
|
||||
('string', '/usr/lib/python3.6/string.py', 'PYMODULE'),
|
||||
('ntpath', '/usr/lib/python3.6/ntpath.py', 'PYMODULE'),
|
||||
('enum', '/usr/lib/python3.6/enum.py', 'PYMODULE'),
|
||||
('signal', '/usr/lib/python3.6/signal.py', 'PYMODULE'),
|
||||
('contextlib', '/usr/lib/python3.6/contextlib.py', 'PYMODULE'),
|
||||
('_threading_local', '/usr/lib/python3.6/_threading_local.py', 'PYMODULE'),
|
||||
('threading', '/usr/lib/python3.6/threading.py', 'PYMODULE'),
|
||||
('selectors', '/usr/lib/python3.6/selectors.py', 'PYMODULE'),
|
||||
('dummy_threading', '/usr/lib/python3.6/dummy_threading.py', 'PYMODULE'),
|
||||
('subprocess', '/usr/lib/python3.6/subprocess.py', 'PYMODULE'),
|
||||
('os', '/usr/lib/python3.6/os.py', 'PYMODULE'),
|
||||
('textwrap', '/usr/lib/python3.6/textwrap.py', 'PYMODULE'),
|
||||
('gettext', '/usr/lib/python3.6/gettext.py', 'PYMODULE'),
|
||||
('argparse', '/usr/lib/python3.6/argparse.py', 'PYMODULE'),
|
||||
('pprint', '/usr/lib/python3.6/pprint.py', 'PYMODULE'),
|
||||
('pickle', '/usr/lib/python3.6/pickle.py', 'PYMODULE'),
|
||||
('tracemalloc', '/usr/lib/python3.6/tracemalloc.py', 'PYMODULE'),
|
||||
('warnings', '/usr/lib/python3.6/warnings.py', 'PYMODULE'),
|
||||
('copy', '/usr/lib/python3.6/copy.py', 'PYMODULE'),
|
||||
('_dummy_thread', '/usr/lib/python3.6/_dummy_thread.py', 'PYMODULE'),
|
||||
('SF', '/root/Downloads/FLO-appStore-master/apps/FloRate/SF.py', 'PYMODULE'),
|
||||
('tkinter.ttk', '/usr/lib/python3.6/tkinter/ttk.py', 'PYMODULE'),
|
||||
('DataCenter',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/DataCenter/__init__.py',
|
||||
'PYMODULE'),
|
||||
('DataCenter.DataCenter',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/DataCenter/DataCenter.py',
|
||||
'PYMODULE'),
|
||||
('sqlite3', '/usr/lib/python3.6/sqlite3/__init__.py', 'PYMODULE'),
|
||||
('sqlite3.dump', '/usr/lib/python3.6/sqlite3/dump.py', 'PYMODULE'),
|
||||
('sqlite3.dbapi2', '/usr/lib/python3.6/sqlite3/dbapi2.py', 'PYMODULE'),
|
||||
('Transaction',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/Transaction/__init__.py',
|
||||
'PYMODULE'),
|
||||
('Transaction.TM',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/Transaction/TM.py',
|
||||
'PYMODULE'),
|
||||
('json', '/usr/lib/python3.6/json/__init__.py', 'PYMODULE'),
|
||||
('json.encoder', '/usr/lib/python3.6/json/encoder.py', 'PYMODULE'),
|
||||
('json.decoder', '/usr/lib/python3.6/json/decoder.py', 'PYMODULE'),
|
||||
('json.scanner', '/usr/lib/python3.6/json/scanner.py', 'PYMODULE'),
|
||||
('tkinter.messagebox',
|
||||
'/usr/lib/python3.6/tkinter/messagebox.py',
|
||||
'PYMODULE'),
|
||||
('tkinter.commondialog',
|
||||
'/usr/lib/python3.6/tkinter/commondialog.py',
|
||||
'PYMODULE'),
|
||||
('tkinter', '/usr/lib/python3.6/tkinter/__init__.py', 'PYMODULE'),
|
||||
('tkinter.constants', '/usr/lib/python3.6/tkinter/constants.py', 'PYMODULE')],
|
||||
[('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||
('resource',
|
||||
'/usr/lib/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_ssl',
|
||||
'/usr/lib/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_hk',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_kr',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_tw',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_cn',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_jp',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_iso2022',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_multibytecodec',
|
||||
'/usr/lib/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_opcode',
|
||||
'/usr/lib/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('readline',
|
||||
'/usr/lib/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('termios',
|
||||
'/usr/lib/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_hashlib',
|
||||
'/usr/lib/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_bz2',
|
||||
'/usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_lzma',
|
||||
'/usr/lib/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_sqlite3',
|
||||
'/usr/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_json',
|
||||
'/usr/lib/python3.6/lib-dynload/_json.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_tkinter',
|
||||
'/usr/lib/python3.6/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('libssl.so.1.1', '/usr/lib/x86_64-linux-gnu/libssl.so.1.1', 'BINARY'),
|
||||
('libcrypto.so.1.1', '/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1', 'BINARY'),
|
||||
('libreadline.so.7', '/lib/x86_64-linux-gnu/libreadline.so.7', 'BINARY'),
|
||||
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||
('libsqlite3.so.0', '/usr/lib/x86_64-linux-gnu/libsqlite3.so.0', 'BINARY'),
|
||||
('libXau.so.6', '/usr/lib/x86_64-linux-gnu/libXau.so.6', 'BINARY'),
|
||||
('libbsd.so.0', '/lib/x86_64-linux-gnu/libbsd.so.0', 'BINARY'),
|
||||
('libuuid.so.1', '/lib/x86_64-linux-gnu/libuuid.so.1', 'BINARY'),
|
||||
('libXrender.so.1', '/usr/lib/x86_64-linux-gnu/libXrender.so.1', 'BINARY'),
|
||||
('libXdmcp.so.6', '/usr/lib/x86_64-linux-gnu/libXdmcp.so.6', 'BINARY'),
|
||||
('libfreetype.so.6', '/usr/lib/x86_64-linux-gnu/libfreetype.so.6', 'BINARY'),
|
||||
('libBLT.2.5.so.8.6', '/usr/lib/libBLT.2.5.so.8.6', 'BINARY'),
|
||||
('libfontconfig.so.1',
|
||||
'/usr/lib/x86_64-linux-gnu/libfontconfig.so.1',
|
||||
'BINARY'),
|
||||
('libX11.so.6', '/usr/lib/x86_64-linux-gnu/libX11.so.6', 'BINARY'),
|
||||
('libXft.so.2', '/usr/lib/x86_64-linux-gnu/libXft.so.2', 'BINARY'),
|
||||
('libXss.so.1', '/usr/lib/x86_64-linux-gnu/libXss.so.1', 'BINARY'),
|
||||
('libtk8.6.so', '/usr/lib/x86_64-linux-gnu/libtk8.6.so', 'BINARY'),
|
||||
('libpng16.so.16', '/usr/lib/x86_64-linux-gnu/libpng16.so.16', 'BINARY'),
|
||||
('libXext.so.6', '/usr/lib/x86_64-linux-gnu/libXext.so.6', 'BINARY'),
|
||||
('libtcl8.6.so', '/usr/lib/x86_64-linux-gnu/libtcl8.6.so', 'BINARY'),
|
||||
('libpython3.6m.so.1.0',
|
||||
'/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0',
|
||||
'BINARY')],
|
||||
[],
|
||||
[],
|
||||
[('base_library.zip',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/build/rating-client/base_library.zip',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_uy.msg', '/usr/share/tcltk/tcl8.6/msgs/es_uy.msg', 'DATA'),
|
||||
('tk/button.tcl', '/usr/share/tcltk/tk8.6/button.tcl', 'DATA'),
|
||||
('tcl/msgs/it.msg', '/usr/share/tcltk/tcl8.6/msgs/it.msg', 'DATA'),
|
||||
('tk/images/pwrdLogo175.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo175.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_ar.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ar.msg', 'DATA'),
|
||||
('tk/images/pwrdLogo150.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo150.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/en_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/en_hk.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-14.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-14.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp737.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp737.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-13.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-13.enc',
|
||||
'DATA'),
|
||||
('tk/panedwindow.tcl', '/usr/share/tcltk/tk8.6/panedwindow.tcl', 'DATA'),
|
||||
('tk/ttk/altTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/altTheme.tcl', 'DATA'),
|
||||
('tcl/encoding/cp852.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp852.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp857.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp857.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_gt.msg', '/usr/share/tcltk/tcl8.6/msgs/es_gt.msg', 'DATA'),
|
||||
('tcl/msgs/hi_in.msg', '/usr/share/tcltk/tcl8.6/msgs/hi_in.msg', 'DATA'),
|
||||
('tk/tkAppInit.c', '/usr/share/tcltk/tk8.6/tkAppInit.c', 'DATA'),
|
||||
('tcl/encoding/ksc5601.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ksc5601.enc',
|
||||
'DATA'),
|
||||
('tk/images/README', '/usr/share/tcltk/tk8.6/images/README', 'DATA'),
|
||||
('tcl/msgs/uk.msg', '/usr/share/tcltk/tcl8.6/msgs/uk.msg', 'DATA'),
|
||||
('tcl/msgs/es_ec.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ec.msg', 'DATA'),
|
||||
('tcl/tcl8/http-2.8.12.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/http-2.8.12.tm',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo75.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo75.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-3.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-3.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/hr.msg', '/usr/share/tcltk/tcl8.6/msgs/hr.msg', 'DATA'),
|
||||
('tcl/encoding/jis0201.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0201.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_cl.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cl.msg', 'DATA'),
|
||||
('tk/msgs/hu.msg', '/usr/share/tcltk/tk8.6/msgs/hu.msg', 'DATA'),
|
||||
('tk/ttk/aquaTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/aquaTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/de_at.msg', '/usr/share/tcltk/tcl8.6/msgs/de_at.msg', 'DATA'),
|
||||
('tcl/msgs/bn_in.msg', '/usr/share/tcltk/tcl8.6/msgs/bn_in.msg', 'DATA'),
|
||||
('tk/listbox.tcl', '/usr/share/tcltk/tk8.6/listbox.tcl', 'DATA'),
|
||||
('tcl/auto.tcl', '/usr/share/tcltk/tcl8.6/auto.tcl', 'DATA'),
|
||||
('tcl/encoding/iso2022-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ga.msg', '/usr/share/tcltk/tcl8.6/msgs/ga.msg', 'DATA'),
|
||||
('tcl/msgs/fr.msg', '/usr/share/tcltk/tcl8.6/msgs/fr.msg', 'DATA'),
|
||||
('tcl/encoding/iso2022.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022.enc',
|
||||
'DATA'),
|
||||
('tk/menu.tcl', '/usr/share/tcltk/tk8.6/menu.tcl', 'DATA'),
|
||||
('tk/msgs/en.msg', '/usr/share/tcltk/tk8.6/msgs/en.msg', 'DATA'),
|
||||
('tcl/msgs/fr_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ca.msg', 'DATA'),
|
||||
('tcl/encoding/cp862.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp862.enc',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo.eps',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo.eps',
|
||||
'DATA'),
|
||||
('tcl/msgs/mr_in.msg', '/usr/share/tcltk/tcl8.6/msgs/mr_in.msg', 'DATA'),
|
||||
('tcl/tcl8/platform-1.0.14.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform-1.0.14.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1253.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1253.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/scrollbar.tcl', '/usr/share/tcltk/tk8.6/ttk/scrollbar.tcl', 'DATA'),
|
||||
('tcl/msgs/es_ve.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ve.msg', 'DATA'),
|
||||
('tcl/msgs/ar_sy.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_sy.msg', 'DATA'),
|
||||
('tcl/msgs/en_nz.msg', '/usr/share/tcltk/tcl8.6/msgs/en_nz.msg', 'DATA'),
|
||||
('tcl/msgs/kl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl.msg', 'DATA'),
|
||||
('tk/ttk/cursors.tcl', '/usr/share/tcltk/tk8.6/ttk/cursors.tcl', 'DATA'),
|
||||
('tcl/msgs/sr.msg', '/usr/share/tcltk/tcl8.6/msgs/sr.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-7.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-7.enc',
|
||||
'DATA'),
|
||||
('tk/console.tcl', '/usr/share/tcltk/tk8.6/console.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-8.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-8.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_co.msg', '/usr/share/tcltk/tcl8.6/msgs/es_co.msg', 'DATA'),
|
||||
('tcl/msgs/eu_es.msg', '/usr/share/tcltk/tcl8.6/msgs/eu_es.msg', 'DATA'),
|
||||
('tcl/init.tcl', '/usr/share/tcltk/tcl8.6/init.tcl', 'DATA'),
|
||||
('tk/ttk/treeview.tcl', '/usr/share/tcltk/tk8.6/ttk/treeview.tcl', 'DATA'),
|
||||
('tcl/msgs/eo.msg', '/usr/share/tcltk/tcl8.6/msgs/eo.msg', 'DATA'),
|
||||
('tcl/msgs/ta_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ta_in.msg', 'DATA'),
|
||||
('tcl/encoding/cp1255.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1255.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1250.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1250.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/jis0208.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0208.enc',
|
||||
'DATA'),
|
||||
('tk/msgs/fr.msg', '/usr/share/tcltk/tk8.6/msgs/fr.msg', 'DATA'),
|
||||
('tcl/msgs/es_mx.msg', '/usr/share/tcltk/tcl8.6/msgs/es_mx.msg', 'DATA'),
|
||||
('tcl/msgs/pt.msg', '/usr/share/tcltk/tcl8.6/msgs/pt.msg', 'DATA'),
|
||||
('tcl/encoding/big5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/big5.enc',
|
||||
'DATA'),
|
||||
('tk/optMenu.tcl', '/usr/share/tcltk/tk8.6/optMenu.tcl', 'DATA'),
|
||||
('tk/ttk/fonts.tcl', '/usr/share/tcltk/tk8.6/ttk/fonts.tcl', 'DATA'),
|
||||
('tcl/msgs/te.msg', '/usr/share/tcltk/tcl8.6/msgs/te.msg', 'DATA'),
|
||||
('tcl/msgs/fa_in.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_in.msg', 'DATA'),
|
||||
('tcl/msgs/fr_be.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_be.msg', 'DATA'),
|
||||
('tk/ttk/progress.tcl', '/usr/share/tcltk/tk8.6/ttk/progress.tcl', 'DATA'),
|
||||
('tcl/msgs/zh_cn.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_cn.msg', 'DATA'),
|
||||
('tk/ttk/scale.tcl', '/usr/share/tcltk/tk8.6/ttk/scale.tcl', 'DATA'),
|
||||
('tcl/msgs/lv.msg', '/usr/share/tcltk/tcl8.6/msgs/lv.msg', 'DATA'),
|
||||
('tk/tkfbox.tcl', '/usr/share/tcltk/tk8.6/tkfbox.tcl', 'DATA'),
|
||||
('tk/images/logo.eps', '/usr/share/tcltk/tk8.6/images/logo.eps', 'DATA'),
|
||||
('tk/msgs/pt.msg', '/usr/share/tcltk/tk8.6/msgs/pt.msg', 'DATA'),
|
||||
('tk/tearoff.tcl', '/usr/share/tcltk/tk8.6/tearoff.tcl', 'DATA'),
|
||||
('tcl/encoding/cp950.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp950.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nl.msg', '/usr/share/tcltk/tcl8.6/msgs/nl.msg', 'DATA'),
|
||||
('tcl/encoding/cp936.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp936.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/sh.msg', '/usr/share/tcltk/tcl8.6/msgs/sh.msg', 'DATA'),
|
||||
('tk/images/logoMed.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoMed.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/mt.msg', '/usr/share/tcltk/tcl8.6/msgs/mt.msg', 'DATA'),
|
||||
('tcl/encoding/iso2022-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/hi.msg', '/usr/share/tcltk/tcl8.6/msgs/hi.msg', 'DATA'),
|
||||
('tcl/msgs/ru.msg', '/usr/share/tcltk/tcl8.6/msgs/ru.msg', 'DATA'),
|
||||
('tk/msgs/en_gb.msg', '/usr/share/tcltk/tk8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tk/ttk/xpTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/xpTheme.tcl', 'DATA'),
|
||||
('tcl/word.tcl', '/usr/share/tcltk/tcl8.6/word.tcl', 'DATA'),
|
||||
('tcl/msgs/es_cr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cr.msg', 'DATA'),
|
||||
('tcl/encoding/cp864.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp864.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp437.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp437.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/tis-620.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/tis-620.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/koi8-u.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-u.enc',
|
||||
'DATA'),
|
||||
('tk/safetk.tcl', '/usr/share/tcltk/tk8.6/safetk.tcl', 'DATA'),
|
||||
('tk/images/pwrdLogo200.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo200.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb1988.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb1988.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nb.msg', '/usr/share/tcltk/tcl8.6/msgs/nb.msg', 'DATA'),
|
||||
('tk/msgs/it.msg', '/usr/share/tcltk/tk8.6/msgs/it.msg', 'DATA'),
|
||||
('tk/palette.tcl', '/usr/share/tcltk/tk8.6/palette.tcl', 'DATA'),
|
||||
('tcl/encoding/macCentEuro.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCentEuro.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp861.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp861.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ar_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_in.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-1.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-1.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/pl.msg', '/usr/share/tcltk/tcl8.6/msgs/pl.msg', 'DATA'),
|
||||
('tk/fontchooser.tcl', '/usr/share/tcltk/tk8.6/fontchooser.tcl', 'DATA'),
|
||||
('tcl/msgs/ko_kr.msg', '/usr/share/tcltk/tcl8.6/msgs/ko_kr.msg', 'DATA'),
|
||||
('tcl/msgs/es_bo.msg', '/usr/share/tcltk/tcl8.6/msgs/es_bo.msg', 'DATA'),
|
||||
('tcl/msgs/de.msg', '/usr/share/tcltk/tcl8.6/msgs/de.msg', 'DATA'),
|
||||
('tcl/msgs/vi.msg', '/usr/share/tcltk/tcl8.6/msgs/vi.msg', 'DATA'),
|
||||
('tcl/safe.tcl', '/usr/share/tcltk/tcl8.6/safe.tcl', 'DATA'),
|
||||
('tk/ttk/winTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/winTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/tr.msg', '/usr/share/tcltk/tcl8.6/msgs/tr.msg', 'DATA'),
|
||||
('tcl/msgs/gl_es.msg', '/usr/share/tcltk/tcl8.6/msgs/gl_es.msg', 'DATA'),
|
||||
('tcl/msgs/es_do.msg', '/usr/share/tcltk/tcl8.6/msgs/es_do.msg', 'DATA'),
|
||||
('tk/clrpick.tcl', '/usr/share/tcltk/tk8.6/clrpick.tcl', 'DATA'),
|
||||
('tcl/encoding/cp775.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp775.enc',
|
||||
'DATA'),
|
||||
('tcl/tclAppInit.c', '/usr/share/tcltk/tcl8.6/tclAppInit.c', 'DATA'),
|
||||
('tcl/package.tcl', '/usr/share/tcltk/tcl8.6/package.tcl', 'DATA'),
|
||||
('tcl/msgs/es_pe.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pe.msg', 'DATA'),
|
||||
('tcl/encoding/symbol.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/symbol.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/ttk.tcl', '/usr/share/tcltk/tk8.6/ttk/ttk.tcl', 'DATA'),
|
||||
('tcl/msgs/gv_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/gv_gb.msg', 'DATA'),
|
||||
('tcl/msgs/mk.msg', '/usr/share/tcltk/tcl8.6/msgs/mk.msg', 'DATA'),
|
||||
('tcl/encoding/gb12345.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb12345.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ms.msg', '/usr/share/tcltk/tcl8.6/msgs/ms.msg', 'DATA'),
|
||||
('tcl/msgs/pt_br.msg', '/usr/share/tcltk/tcl8.6/msgs/pt_br.msg', 'DATA'),
|
||||
('tcl/msgs/en_zw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_zw.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-10.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-10.enc',
|
||||
'DATA'),
|
||||
('tk/mkpsenc.tcl', '/usr/share/tcltk/tk8.6/mkpsenc.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-6.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-6.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1256.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1256.enc',
|
||||
'DATA'),
|
||||
('tk/msgs/nl.msg', '/usr/share/tcltk/tk8.6/msgs/nl.msg', 'DATA'),
|
||||
('tcl/msgs/ca.msg', '/usr/share/tcltk/tcl8.6/msgs/ca.msg', 'DATA'),
|
||||
('tcl/encoding/cp865.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp865.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-9.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-9.enc',
|
||||
'DATA'),
|
||||
('tk/images/logoLarge.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoLarge.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/ascii.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ascii.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kw_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/kw_gb.msg', 'DATA'),
|
||||
('tcl/encoding/cp860.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp860.enc',
|
||||
'DATA'),
|
||||
('tcl/tm.tcl', '/usr/share/tcltk/tcl8.6/tm.tcl', 'DATA'),
|
||||
('tcl/msgs/es_ni.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ni.msg', 'DATA'),
|
||||
('tcl/encoding/euc-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-4.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-4.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macUkraine.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macUkraine.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/el.msg', '/usr/share/tcltk/tcl8.6/msgs/el.msg', 'DATA'),
|
||||
('tk/scale.tcl', '/usr/share/tcltk/tk8.6/scale.tcl', 'DATA'),
|
||||
('tk/obsolete.tcl', '/usr/share/tcltk/tk8.6/obsolete.tcl', 'DATA'),
|
||||
('tcl/msgs/gl.msg', '/usr/share/tcltk/tcl8.6/msgs/gl.msg', 'DATA'),
|
||||
('tcl/msgs/es.msg', '/usr/share/tcltk/tcl8.6/msgs/es.msg', 'DATA'),
|
||||
('tcl/encoding/cp850.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp850.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/utils.tcl', '/usr/share/tcltk/tk8.6/ttk/utils.tcl', 'DATA'),
|
||||
('tcl/encoding/cp1254.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1254.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/gv.msg', '/usr/share/tcltk/tcl8.6/msgs/gv.msg', 'DATA'),
|
||||
('tcl/msgs/id_id.msg', '/usr/share/tcltk/tcl8.6/msgs/id_id.msg', 'DATA'),
|
||||
('tcl/encoding/macRomania.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRomania.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/euc-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp866.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp866.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fo_fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo_fo.msg', 'DATA'),
|
||||
('tcl/clock.tcl', '/usr/share/tcltk/tcl8.6/clock.tcl', 'DATA'),
|
||||
('tcl/encoding/gb2312.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1252.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1252.enc',
|
||||
'DATA'),
|
||||
('tk/icons.tcl', '/usr/share/tcltk/tk8.6/icons.tcl', 'DATA'),
|
||||
('tcl/msgs/fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo.msg', 'DATA'),
|
||||
('tk/ttk/entry.tcl', '/usr/share/tcltk/tk8.6/ttk/entry.tcl', 'DATA'),
|
||||
('tcl/tclIndex', '/usr/share/tcltk/tcl8.6/tclIndex', 'DATA'),
|
||||
('tcl/msgs/is.msg', '/usr/share/tcltk/tcl8.6/msgs/is.msg', 'DATA'),
|
||||
('tcl/msgs/es_hn.msg', '/usr/share/tcltk/tcl8.6/msgs/es_hn.msg', 'DATA'),
|
||||
('tcl/tcl8/tcltest-2.4.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/tcltest-2.4.1.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/dingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/dingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb2312-raw.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312-raw.enc',
|
||||
'DATA'),
|
||||
('tk/iconlist.tcl', '/usr/share/tcltk/tk8.6/iconlist.tcl', 'DATA'),
|
||||
('tcl/encoding/macGreek.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macGreek.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/button.tcl', '/usr/share/tcltk/tk8.6/ttk/button.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-5.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ja.msg', '/usr/share/tcltk/tcl8.6/msgs/ja.msg', 'DATA'),
|
||||
('tcl/encoding/macDingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macDingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/af_za.msg', '/usr/share/tcltk/tcl8.6/msgs/af_za.msg', 'DATA'),
|
||||
('tcl/msgs/sv.msg', '/usr/share/tcltk/tcl8.6/msgs/sv.msg', 'DATA'),
|
||||
('tcl/msgs/en_au.msg', '/usr/share/tcltk/tcl8.6/msgs/en_au.msg', 'DATA'),
|
||||
('tcl/msgs/fa_ir.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_ir.msg', 'DATA'),
|
||||
('tcl/msgs/be.msg', '/usr/share/tcltk/tcl8.6/msgs/be.msg', 'DATA'),
|
||||
('tk/ttk/defaults.tcl', '/usr/share/tcltk/tk8.6/ttk/defaults.tcl', 'DATA'),
|
||||
('tk/tk.tcl', '/usr/share/tcltk/tk8.6/tk.tcl', 'DATA'),
|
||||
('tk/msgs/sv.msg', '/usr/share/tcltk/tk8.6/msgs/sv.msg', 'DATA'),
|
||||
('tcl/msgs/es_sv.msg', '/usr/share/tcltk/tcl8.6/msgs/es_sv.msg', 'DATA'),
|
||||
('tcl/msgs/ms_my.msg', '/usr/share/tcltk/tcl8.6/msgs/ms_my.msg', 'DATA'),
|
||||
('tcl/msgs/fi.msg', '/usr/share/tcltk/tcl8.6/msgs/fi.msg', 'DATA'),
|
||||
('tcl/opt0.4/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp949.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp949.enc',
|
||||
'DATA'),
|
||||
('tk/comdlg.tcl', '/usr/share/tcltk/tk8.6/comdlg.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-15.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-15.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/clamTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/clamTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/mr.msg', '/usr/share/tcltk/tcl8.6/msgs/mr.msg', 'DATA'),
|
||||
('tcl/msgs/ro.msg', '/usr/share/tcltk/tcl8.6/msgs/ro.msg', 'DATA'),
|
||||
('tcl/msgs/en_in.msg', '/usr/share/tcltk/tcl8.6/msgs/en_in.msg', 'DATA'),
|
||||
('tk/msgs/da.msg', '/usr/share/tcltk/tk8.6/msgs/da.msg', 'DATA'),
|
||||
('tcl/msgs/he.msg', '/usr/share/tcltk/tcl8.6/msgs/he.msg', 'DATA'),
|
||||
('tk/msgs/eo.msg', '/usr/share/tcltk/tk8.6/msgs/eo.msg', 'DATA'),
|
||||
('tcl/msgs/nn.msg', '/usr/share/tcltk/tcl8.6/msgs/nn.msg', 'DATA'),
|
||||
('tcl/msgs/zh_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_hk.msg', 'DATA'),
|
||||
('tcl/msgs/it_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/it_ch.msg', 'DATA'),
|
||||
('tk/msgs/es.msg', '/usr/share/tcltk/tk8.6/msgs/es.msg', 'DATA'),
|
||||
('tk/ttk/combobox.tcl', '/usr/share/tcltk/tk8.6/ttk/combobox.tcl', 'DATA'),
|
||||
('tk/entry.tcl', '/usr/share/tcltk/tk8.6/entry.tcl', 'DATA'),
|
||||
('tcl/msgs/de_be.msg', '/usr/share/tcltk/tcl8.6/msgs/de_be.msg', 'DATA'),
|
||||
('tcl/msgs/lt.msg', '/usr/share/tcltk/tcl8.6/msgs/lt.msg', 'DATA'),
|
||||
('tcl/encoding/cp1258.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1258.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/notebook.tcl', '/usr/share/tcltk/tk8.6/ttk/notebook.tcl', 'DATA'),
|
||||
('tcl/msgs/sq.msg', '/usr/share/tcltk/tcl8.6/msgs/sq.msg', 'DATA'),
|
||||
('tk/unsupported.tcl', '/usr/share/tcltk/tk8.6/unsupported.tcl', 'DATA'),
|
||||
('tcl/encoding/koi8-r.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-r.enc',
|
||||
'DATA'),
|
||||
('tcl/tcl8/platform/shell-1.1.4.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform/shell-1.1.4.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/ebcdic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ebcdic.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ru_ua.msg', '/usr/share/tcltk/tcl8.6/msgs/ru_ua.msg', 'DATA'),
|
||||
('tcl/msgs/en_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ie.msg', 'DATA'),
|
||||
('tcl/encoding/cp869.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp869.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ar_lb.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_lb.msg', 'DATA'),
|
||||
('tcl/msgs/en_za.msg', '/usr/share/tcltk/tcl8.6/msgs/en_za.msg', 'DATA'),
|
||||
('tcl/encoding/macRoman.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRoman.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_py.msg', '/usr/share/tcltk/tcl8.6/msgs/es_py.msg', 'DATA'),
|
||||
('tcl/msgs/hu.msg', '/usr/share/tcltk/tcl8.6/msgs/hu.msg', 'DATA'),
|
||||
('tcl/msgs/zh_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_sg.msg', 'DATA'),
|
||||
('tk/megawidget.tcl', '/usr/share/tcltk/tk8.6/megawidget.tcl', 'DATA'),
|
||||
('tk/tclIndex', '/usr/share/tcltk/tk8.6/tclIndex', 'DATA'),
|
||||
('tcl/history.tcl', '/usr/share/tcltk/tcl8.6/history.tcl', 'DATA'),
|
||||
('tk/msgbox.tcl', '/usr/share/tcltk/tk8.6/msgbox.tcl', 'DATA'),
|
||||
('tcl/msgs/en_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ca.msg', 'DATA'),
|
||||
('tcl/msgs/en_ph.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ph.msg', 'DATA'),
|
||||
('tk/images/logo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logo100.gif',
|
||||
'DATA'),
|
||||
('tk/scrlbar.tcl', '/usr/share/tcltk/tk8.6/scrlbar.tcl', 'DATA'),
|
||||
('tk/msgs/de.msg', '/usr/share/tcltk/tk8.6/msgs/de.msg', 'DATA'),
|
||||
('tcl/msgs/eu.msg', '/usr/share/tcltk/tcl8.6/msgs/eu.msg', 'DATA'),
|
||||
('tcl/msgs/kl_gl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl_gl.msg', 'DATA'),
|
||||
('tk/ttk/vistaTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/vistaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/spinbox.tcl', '/usr/share/tcltk/tk8.6/ttk/spinbox.tcl', 'DATA'),
|
||||
('tk/msgs/el.msg', '/usr/share/tcltk/tk8.6/msgs/el.msg', 'DATA'),
|
||||
('tk/ttk/sizegrip.tcl', '/usr/share/tcltk/tk8.6/ttk/sizegrip.tcl', 'DATA'),
|
||||
('tcl/msgs/id.msg', '/usr/share/tcltk/tcl8.6/msgs/id.msg', 'DATA'),
|
||||
('tcl/encoding/jis0212.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0212.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/en_be.msg', '/usr/share/tcltk/tcl8.6/msgs/en_be.msg', 'DATA'),
|
||||
('tcl/encoding/euc-cn.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-cn.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macJapan.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macJapan.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kw.msg', '/usr/share/tcltk/tcl8.6/msgs/kw.msg', 'DATA'),
|
||||
('tcl/msgs/sl.msg', '/usr/share/tcltk/tcl8.6/msgs/sl.msg', 'DATA'),
|
||||
('tk/ttk/classicTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/classicTheme.tcl',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCroatian.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCroatian.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCyrillic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCyrillic.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fa.msg', '/usr/share/tcltk/tcl8.6/msgs/fa.msg', 'DATA'),
|
||||
('tcl/msgs/ta.msg', '/usr/share/tcltk/tcl8.6/msgs/ta.msg', 'DATA'),
|
||||
('tcl/msgs/en_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tk/images/tai-ku.gif', '/usr/share/tcltk/tk8.6/images/tai-ku.gif', 'DATA'),
|
||||
('tcl/encoding/cp874.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp874.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nl_be.msg', '/usr/share/tcltk/tcl8.6/msgs/nl_be.msg', 'DATA'),
|
||||
('tcl/http1.0/http.tcl', '/usr/share/tcltk/tcl8.6/http1.0/http.tcl', 'DATA'),
|
||||
('tcl/msgs/en_bw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_bw.msg', 'DATA'),
|
||||
('tk/msgs/ru.msg', '/usr/share/tcltk/tk8.6/msgs/ru.msg', 'DATA'),
|
||||
('tcl/msgs/zh.msg', '/usr/share/tcltk/tcl8.6/msgs/zh.msg', 'DATA'),
|
||||
('tk/ttk/menubutton.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/menubutton.tcl',
|
||||
'DATA'),
|
||||
('tcl/msgs/ga_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/ga_ie.msg', 'DATA'),
|
||||
('tcl/msgs/en_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/en_sg.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-2.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-2.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kok_in.msg', '/usr/share/tcltk/tcl8.6/msgs/kok_in.msg', 'DATA'),
|
||||
('tk/msgs/pl.msg', '/usr/share/tcltk/tk8.6/msgs/pl.msg', 'DATA'),
|
||||
('tcl/msgs/ar_jo.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_jo.msg', 'DATA'),
|
||||
('tcl/msgs/ko.msg', '/usr/share/tcltk/tcl8.6/msgs/ko.msg', 'DATA'),
|
||||
('tcl/encoding/cp932.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp932.enc',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo100.gif',
|
||||
'DATA'),
|
||||
('tk/msgs/cs.msg', '/usr/share/tcltk/tk8.6/msgs/cs.msg', 'DATA'),
|
||||
('tcl/msgs/af.msg', '/usr/share/tcltk/tcl8.6/msgs/af.msg', 'DATA'),
|
||||
('tcl/msgs/sw.msg', '/usr/share/tcltk/tcl8.6/msgs/sw.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-16.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-16.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/bn.msg', '/usr/share/tcltk/tcl8.6/msgs/bn.msg', 'DATA'),
|
||||
('tcl/msgs/cs.msg', '/usr/share/tcltk/tcl8.6/msgs/cs.msg', 'DATA'),
|
||||
('tk/dialog.tcl', '/usr/share/tcltk/tk8.6/dialog.tcl', 'DATA'),
|
||||
('tcl/http1.0/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/http1.0/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/panedwindow.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk/images/logo64.gif', '/usr/share/tcltk/tk8.6/images/logo64.gif', 'DATA'),
|
||||
('tk/focus.tcl', '/usr/share/tcltk/tk8.6/focus.tcl', 'DATA'),
|
||||
('tcl/parray.tcl', '/usr/share/tcltk/tcl8.6/parray.tcl', 'DATA'),
|
||||
('tcl/encoding/macTurkish.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macTurkish.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macIceland.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macIceland.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/th.msg', '/usr/share/tcltk/tcl8.6/msgs/th.msg', 'DATA'),
|
||||
('tk/choosedir.tcl', '/usr/share/tcltk/tk8.6/choosedir.tcl', 'DATA'),
|
||||
('tcl/msgs/es_pr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pr.msg', 'DATA'),
|
||||
('tcl/msgs/da.msg', '/usr/share/tcltk/tcl8.6/msgs/da.msg', 'DATA'),
|
||||
('tk/bgerror.tcl', '/usr/share/tcltk/tk8.6/bgerror.tcl', 'DATA'),
|
||||
('tcl/encoding/cp1251.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1251.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/zh_tw.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_tw.msg', 'DATA'),
|
||||
('tcl/encoding/cp1257.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1257.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/et.msg', '/usr/share/tcltk/tcl8.6/msgs/et.msg', 'DATA'),
|
||||
('tk/text.tcl', '/usr/share/tcltk/tk8.6/text.tcl', 'DATA'),
|
||||
('tcl/msgs/bg.msg', '/usr/share/tcltk/tcl8.6/msgs/bg.msg', 'DATA'),
|
||||
('tcl/msgs/te_in.msg', '/usr/share/tcltk/tcl8.6/msgs/te_in.msg', 'DATA'),
|
||||
('tcl/msgs/sk.msg', '/usr/share/tcltk/tcl8.6/msgs/sk.msg', 'DATA'),
|
||||
('tcl/encoding/shiftjis.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/shiftjis.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fr_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ch.msg', 'DATA'),
|
||||
('tk/xmfbox.tcl', '/usr/share/tcltk/tk8.6/xmfbox.tcl', 'DATA'),
|
||||
('tcl/encoding/cp855.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp855.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_pa.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pa.msg', 'DATA'),
|
||||
('tcl/msgs/kok.msg', '/usr/share/tcltk/tcl8.6/msgs/kok.msg', 'DATA'),
|
||||
('tcl/msgs/ar.msg', '/usr/share/tcltk/tcl8.6/msgs/ar.msg', 'DATA'),
|
||||
('tcl/tcl8/msgcat-1.6.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/msgcat-1.6.1.tm',
|
||||
'DATA'),
|
||||
('tcl/opt0.4/optparse.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/optparse.tcl',
|
||||
'DATA'),
|
||||
('tk/spinbox.tcl', '/usr/share/tcltk/tk8.6/spinbox.tcl', 'DATA'),
|
||||
('tcl/encoding/cp863.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp863.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macThai.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macThai.enc',
|
||||
'DATA')],
|
||||
[])
|
||||
@ -1,635 +0,0 @@
|
||||
('/root/Downloads/FLO-appStore-master/apps/FloRate/dist/rating-client',
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
None,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
True,
|
||||
'rating-client.pkg',
|
||||
[('out00-PYZ.pyz',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/build/rating-client/out00-PYZ.pyz',
|
||||
'PYZ'),
|
||||
('struct', '/usr/lib/python3.6/struct.pyo', 'PYMODULE'),
|
||||
('pyimod01_os_path',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod01_os_path.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod02_archive',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod02_archive.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod03_importers',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod03_importers.pyc',
|
||||
'PYMODULE'),
|
||||
('pyiboot01_bootstrap',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
|
||||
'PYSOURCE'),
|
||||
('pyi_rth__tkinter',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py',
|
||||
'PYSOURCE'),
|
||||
('rating-client',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py',
|
||||
'PYSOURCE'),
|
||||
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||
('resource',
|
||||
'/usr/lib/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_ssl',
|
||||
'/usr/lib/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_hk',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_kr',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_tw',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_cn',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_jp',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_iso2022',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_multibytecodec',
|
||||
'/usr/lib/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_opcode',
|
||||
'/usr/lib/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('readline',
|
||||
'/usr/lib/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('termios',
|
||||
'/usr/lib/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_hashlib',
|
||||
'/usr/lib/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_bz2',
|
||||
'/usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_lzma',
|
||||
'/usr/lib/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_sqlite3',
|
||||
'/usr/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_json',
|
||||
'/usr/lib/python3.6/lib-dynload/_json.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_tkinter',
|
||||
'/usr/lib/python3.6/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('libssl.so.1.1', '/usr/lib/x86_64-linux-gnu/libssl.so.1.1', 'BINARY'),
|
||||
('libcrypto.so.1.1', '/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1', 'BINARY'),
|
||||
('libreadline.so.7', '/lib/x86_64-linux-gnu/libreadline.so.7', 'BINARY'),
|
||||
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||
('libsqlite3.so.0', '/usr/lib/x86_64-linux-gnu/libsqlite3.so.0', 'BINARY'),
|
||||
('libXau.so.6', '/usr/lib/x86_64-linux-gnu/libXau.so.6', 'BINARY'),
|
||||
('libbsd.so.0', '/lib/x86_64-linux-gnu/libbsd.so.0', 'BINARY'),
|
||||
('libuuid.so.1', '/lib/x86_64-linux-gnu/libuuid.so.1', 'BINARY'),
|
||||
('libXrender.so.1', '/usr/lib/x86_64-linux-gnu/libXrender.so.1', 'BINARY'),
|
||||
('libXdmcp.so.6', '/usr/lib/x86_64-linux-gnu/libXdmcp.so.6', 'BINARY'),
|
||||
('libfreetype.so.6', '/usr/lib/x86_64-linux-gnu/libfreetype.so.6', 'BINARY'),
|
||||
('libBLT.2.5.so.8.6', '/usr/lib/libBLT.2.5.so.8.6', 'BINARY'),
|
||||
('libfontconfig.so.1',
|
||||
'/usr/lib/x86_64-linux-gnu/libfontconfig.so.1',
|
||||
'BINARY'),
|
||||
('libX11.so.6', '/usr/lib/x86_64-linux-gnu/libX11.so.6', 'BINARY'),
|
||||
('libXft.so.2', '/usr/lib/x86_64-linux-gnu/libXft.so.2', 'BINARY'),
|
||||
('libXss.so.1', '/usr/lib/x86_64-linux-gnu/libXss.so.1', 'BINARY'),
|
||||
('libtk8.6.so', '/usr/lib/x86_64-linux-gnu/libtk8.6.so', 'BINARY'),
|
||||
('libpng16.so.16', '/usr/lib/x86_64-linux-gnu/libpng16.so.16', 'BINARY'),
|
||||
('libXext.so.6', '/usr/lib/x86_64-linux-gnu/libXext.so.6', 'BINARY'),
|
||||
('libtcl8.6.so', '/usr/lib/x86_64-linux-gnu/libtcl8.6.so', 'BINARY'),
|
||||
('libpython3.6m.so.1.0',
|
||||
'/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0',
|
||||
'BINARY'),
|
||||
('base_library.zip',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/build/rating-client/base_library.zip',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_uy.msg', '/usr/share/tcltk/tcl8.6/msgs/es_uy.msg', 'DATA'),
|
||||
('tk/button.tcl', '/usr/share/tcltk/tk8.6/button.tcl', 'DATA'),
|
||||
('tcl/msgs/it.msg', '/usr/share/tcltk/tcl8.6/msgs/it.msg', 'DATA'),
|
||||
('tk/images/pwrdLogo175.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo175.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_ar.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ar.msg', 'DATA'),
|
||||
('tk/images/pwrdLogo150.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo150.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/en_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/en_hk.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-14.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-14.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp737.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp737.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-13.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-13.enc',
|
||||
'DATA'),
|
||||
('tk/panedwindow.tcl', '/usr/share/tcltk/tk8.6/panedwindow.tcl', 'DATA'),
|
||||
('tk/ttk/altTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/altTheme.tcl', 'DATA'),
|
||||
('tcl/encoding/cp852.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp852.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp857.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp857.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_gt.msg', '/usr/share/tcltk/tcl8.6/msgs/es_gt.msg', 'DATA'),
|
||||
('tcl/msgs/hi_in.msg', '/usr/share/tcltk/tcl8.6/msgs/hi_in.msg', 'DATA'),
|
||||
('tk/tkAppInit.c', '/usr/share/tcltk/tk8.6/tkAppInit.c', 'DATA'),
|
||||
('tcl/encoding/ksc5601.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ksc5601.enc',
|
||||
'DATA'),
|
||||
('tk/images/README', '/usr/share/tcltk/tk8.6/images/README', 'DATA'),
|
||||
('tcl/msgs/uk.msg', '/usr/share/tcltk/tcl8.6/msgs/uk.msg', 'DATA'),
|
||||
('tcl/msgs/es_ec.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ec.msg', 'DATA'),
|
||||
('tcl/tcl8/http-2.8.12.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/http-2.8.12.tm',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo75.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo75.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-3.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-3.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/hr.msg', '/usr/share/tcltk/tcl8.6/msgs/hr.msg', 'DATA'),
|
||||
('tcl/encoding/jis0201.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0201.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_cl.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cl.msg', 'DATA'),
|
||||
('tk/msgs/hu.msg', '/usr/share/tcltk/tk8.6/msgs/hu.msg', 'DATA'),
|
||||
('tk/ttk/aquaTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/aquaTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/de_at.msg', '/usr/share/tcltk/tcl8.6/msgs/de_at.msg', 'DATA'),
|
||||
('tcl/msgs/bn_in.msg', '/usr/share/tcltk/tcl8.6/msgs/bn_in.msg', 'DATA'),
|
||||
('tk/listbox.tcl', '/usr/share/tcltk/tk8.6/listbox.tcl', 'DATA'),
|
||||
('tcl/auto.tcl', '/usr/share/tcltk/tcl8.6/auto.tcl', 'DATA'),
|
||||
('tcl/encoding/iso2022-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ga.msg', '/usr/share/tcltk/tcl8.6/msgs/ga.msg', 'DATA'),
|
||||
('tcl/msgs/fr.msg', '/usr/share/tcltk/tcl8.6/msgs/fr.msg', 'DATA'),
|
||||
('tcl/encoding/iso2022.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022.enc',
|
||||
'DATA'),
|
||||
('tk/menu.tcl', '/usr/share/tcltk/tk8.6/menu.tcl', 'DATA'),
|
||||
('tk/msgs/en.msg', '/usr/share/tcltk/tk8.6/msgs/en.msg', 'DATA'),
|
||||
('tcl/msgs/fr_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ca.msg', 'DATA'),
|
||||
('tcl/encoding/cp862.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp862.enc',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo.eps',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo.eps',
|
||||
'DATA'),
|
||||
('tcl/msgs/mr_in.msg', '/usr/share/tcltk/tcl8.6/msgs/mr_in.msg', 'DATA'),
|
||||
('tcl/tcl8/platform-1.0.14.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform-1.0.14.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1253.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1253.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/scrollbar.tcl', '/usr/share/tcltk/tk8.6/ttk/scrollbar.tcl', 'DATA'),
|
||||
('tcl/msgs/es_ve.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ve.msg', 'DATA'),
|
||||
('tcl/msgs/ar_sy.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_sy.msg', 'DATA'),
|
||||
('tcl/msgs/en_nz.msg', '/usr/share/tcltk/tcl8.6/msgs/en_nz.msg', 'DATA'),
|
||||
('tcl/msgs/kl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl.msg', 'DATA'),
|
||||
('tk/ttk/cursors.tcl', '/usr/share/tcltk/tk8.6/ttk/cursors.tcl', 'DATA'),
|
||||
('tcl/msgs/sr.msg', '/usr/share/tcltk/tcl8.6/msgs/sr.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-7.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-7.enc',
|
||||
'DATA'),
|
||||
('tk/console.tcl', '/usr/share/tcltk/tk8.6/console.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-8.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-8.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_co.msg', '/usr/share/tcltk/tcl8.6/msgs/es_co.msg', 'DATA'),
|
||||
('tcl/msgs/eu_es.msg', '/usr/share/tcltk/tcl8.6/msgs/eu_es.msg', 'DATA'),
|
||||
('tcl/init.tcl', '/usr/share/tcltk/tcl8.6/init.tcl', 'DATA'),
|
||||
('tk/ttk/treeview.tcl', '/usr/share/tcltk/tk8.6/ttk/treeview.tcl', 'DATA'),
|
||||
('tcl/msgs/eo.msg', '/usr/share/tcltk/tcl8.6/msgs/eo.msg', 'DATA'),
|
||||
('tcl/msgs/ta_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ta_in.msg', 'DATA'),
|
||||
('tcl/encoding/cp1255.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1255.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1250.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1250.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/jis0208.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0208.enc',
|
||||
'DATA'),
|
||||
('tk/msgs/fr.msg', '/usr/share/tcltk/tk8.6/msgs/fr.msg', 'DATA'),
|
||||
('tcl/msgs/es_mx.msg', '/usr/share/tcltk/tcl8.6/msgs/es_mx.msg', 'DATA'),
|
||||
('tcl/msgs/pt.msg', '/usr/share/tcltk/tcl8.6/msgs/pt.msg', 'DATA'),
|
||||
('tcl/encoding/big5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/big5.enc',
|
||||
'DATA'),
|
||||
('tk/optMenu.tcl', '/usr/share/tcltk/tk8.6/optMenu.tcl', 'DATA'),
|
||||
('tk/ttk/fonts.tcl', '/usr/share/tcltk/tk8.6/ttk/fonts.tcl', 'DATA'),
|
||||
('tcl/msgs/te.msg', '/usr/share/tcltk/tcl8.6/msgs/te.msg', 'DATA'),
|
||||
('tcl/msgs/fa_in.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_in.msg', 'DATA'),
|
||||
('tcl/msgs/fr_be.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_be.msg', 'DATA'),
|
||||
('tk/ttk/progress.tcl', '/usr/share/tcltk/tk8.6/ttk/progress.tcl', 'DATA'),
|
||||
('tcl/msgs/zh_cn.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_cn.msg', 'DATA'),
|
||||
('tk/ttk/scale.tcl', '/usr/share/tcltk/tk8.6/ttk/scale.tcl', 'DATA'),
|
||||
('tcl/msgs/lv.msg', '/usr/share/tcltk/tcl8.6/msgs/lv.msg', 'DATA'),
|
||||
('tk/tkfbox.tcl', '/usr/share/tcltk/tk8.6/tkfbox.tcl', 'DATA'),
|
||||
('tk/images/logo.eps', '/usr/share/tcltk/tk8.6/images/logo.eps', 'DATA'),
|
||||
('tk/msgs/pt.msg', '/usr/share/tcltk/tk8.6/msgs/pt.msg', 'DATA'),
|
||||
('tk/tearoff.tcl', '/usr/share/tcltk/tk8.6/tearoff.tcl', 'DATA'),
|
||||
('tcl/encoding/cp950.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp950.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nl.msg', '/usr/share/tcltk/tcl8.6/msgs/nl.msg', 'DATA'),
|
||||
('tcl/encoding/cp936.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp936.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/sh.msg', '/usr/share/tcltk/tcl8.6/msgs/sh.msg', 'DATA'),
|
||||
('tk/images/logoMed.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoMed.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/mt.msg', '/usr/share/tcltk/tcl8.6/msgs/mt.msg', 'DATA'),
|
||||
('tcl/encoding/iso2022-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/hi.msg', '/usr/share/tcltk/tcl8.6/msgs/hi.msg', 'DATA'),
|
||||
('tcl/msgs/ru.msg', '/usr/share/tcltk/tcl8.6/msgs/ru.msg', 'DATA'),
|
||||
('tk/msgs/en_gb.msg', '/usr/share/tcltk/tk8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tk/ttk/xpTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/xpTheme.tcl', 'DATA'),
|
||||
('tcl/word.tcl', '/usr/share/tcltk/tcl8.6/word.tcl', 'DATA'),
|
||||
('tcl/msgs/es_cr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cr.msg', 'DATA'),
|
||||
('tcl/encoding/cp864.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp864.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp437.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp437.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/tis-620.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/tis-620.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/koi8-u.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-u.enc',
|
||||
'DATA'),
|
||||
('tk/safetk.tcl', '/usr/share/tcltk/tk8.6/safetk.tcl', 'DATA'),
|
||||
('tk/images/pwrdLogo200.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo200.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb1988.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb1988.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nb.msg', '/usr/share/tcltk/tcl8.6/msgs/nb.msg', 'DATA'),
|
||||
('tk/msgs/it.msg', '/usr/share/tcltk/tk8.6/msgs/it.msg', 'DATA'),
|
||||
('tk/palette.tcl', '/usr/share/tcltk/tk8.6/palette.tcl', 'DATA'),
|
||||
('tcl/encoding/macCentEuro.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCentEuro.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp861.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp861.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ar_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_in.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-1.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-1.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/pl.msg', '/usr/share/tcltk/tcl8.6/msgs/pl.msg', 'DATA'),
|
||||
('tk/fontchooser.tcl', '/usr/share/tcltk/tk8.6/fontchooser.tcl', 'DATA'),
|
||||
('tcl/msgs/ko_kr.msg', '/usr/share/tcltk/tcl8.6/msgs/ko_kr.msg', 'DATA'),
|
||||
('tcl/msgs/es_bo.msg', '/usr/share/tcltk/tcl8.6/msgs/es_bo.msg', 'DATA'),
|
||||
('tcl/msgs/de.msg', '/usr/share/tcltk/tcl8.6/msgs/de.msg', 'DATA'),
|
||||
('tcl/msgs/vi.msg', '/usr/share/tcltk/tcl8.6/msgs/vi.msg', 'DATA'),
|
||||
('tcl/safe.tcl', '/usr/share/tcltk/tcl8.6/safe.tcl', 'DATA'),
|
||||
('tk/ttk/winTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/winTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/tr.msg', '/usr/share/tcltk/tcl8.6/msgs/tr.msg', 'DATA'),
|
||||
('tcl/msgs/gl_es.msg', '/usr/share/tcltk/tcl8.6/msgs/gl_es.msg', 'DATA'),
|
||||
('tcl/msgs/es_do.msg', '/usr/share/tcltk/tcl8.6/msgs/es_do.msg', 'DATA'),
|
||||
('tk/clrpick.tcl', '/usr/share/tcltk/tk8.6/clrpick.tcl', 'DATA'),
|
||||
('tcl/encoding/cp775.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp775.enc',
|
||||
'DATA'),
|
||||
('tcl/tclAppInit.c', '/usr/share/tcltk/tcl8.6/tclAppInit.c', 'DATA'),
|
||||
('tcl/package.tcl', '/usr/share/tcltk/tcl8.6/package.tcl', 'DATA'),
|
||||
('tcl/msgs/es_pe.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pe.msg', 'DATA'),
|
||||
('tcl/encoding/symbol.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/symbol.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/ttk.tcl', '/usr/share/tcltk/tk8.6/ttk/ttk.tcl', 'DATA'),
|
||||
('tcl/msgs/gv_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/gv_gb.msg', 'DATA'),
|
||||
('tcl/msgs/mk.msg', '/usr/share/tcltk/tcl8.6/msgs/mk.msg', 'DATA'),
|
||||
('tcl/encoding/gb12345.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb12345.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ms.msg', '/usr/share/tcltk/tcl8.6/msgs/ms.msg', 'DATA'),
|
||||
('tcl/msgs/pt_br.msg', '/usr/share/tcltk/tcl8.6/msgs/pt_br.msg', 'DATA'),
|
||||
('tcl/msgs/en_zw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_zw.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-10.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-10.enc',
|
||||
'DATA'),
|
||||
('tk/mkpsenc.tcl', '/usr/share/tcltk/tk8.6/mkpsenc.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-6.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-6.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1256.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1256.enc',
|
||||
'DATA'),
|
||||
('tk/msgs/nl.msg', '/usr/share/tcltk/tk8.6/msgs/nl.msg', 'DATA'),
|
||||
('tcl/msgs/ca.msg', '/usr/share/tcltk/tcl8.6/msgs/ca.msg', 'DATA'),
|
||||
('tcl/encoding/cp865.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp865.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-9.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-9.enc',
|
||||
'DATA'),
|
||||
('tk/images/logoLarge.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoLarge.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/ascii.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ascii.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kw_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/kw_gb.msg', 'DATA'),
|
||||
('tcl/encoding/cp860.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp860.enc',
|
||||
'DATA'),
|
||||
('tcl/tm.tcl', '/usr/share/tcltk/tcl8.6/tm.tcl', 'DATA'),
|
||||
('tcl/msgs/es_ni.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ni.msg', 'DATA'),
|
||||
('tcl/encoding/euc-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-4.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-4.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macUkraine.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macUkraine.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/el.msg', '/usr/share/tcltk/tcl8.6/msgs/el.msg', 'DATA'),
|
||||
('tk/scale.tcl', '/usr/share/tcltk/tk8.6/scale.tcl', 'DATA'),
|
||||
('tk/obsolete.tcl', '/usr/share/tcltk/tk8.6/obsolete.tcl', 'DATA'),
|
||||
('tcl/msgs/gl.msg', '/usr/share/tcltk/tcl8.6/msgs/gl.msg', 'DATA'),
|
||||
('tcl/msgs/es.msg', '/usr/share/tcltk/tcl8.6/msgs/es.msg', 'DATA'),
|
||||
('tcl/encoding/cp850.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp850.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/utils.tcl', '/usr/share/tcltk/tk8.6/ttk/utils.tcl', 'DATA'),
|
||||
('tcl/encoding/cp1254.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1254.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/gv.msg', '/usr/share/tcltk/tcl8.6/msgs/gv.msg', 'DATA'),
|
||||
('tcl/msgs/id_id.msg', '/usr/share/tcltk/tcl8.6/msgs/id_id.msg', 'DATA'),
|
||||
('tcl/encoding/macRomania.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRomania.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/euc-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp866.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp866.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fo_fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo_fo.msg', 'DATA'),
|
||||
('tcl/clock.tcl', '/usr/share/tcltk/tcl8.6/clock.tcl', 'DATA'),
|
||||
('tcl/encoding/gb2312.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1252.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1252.enc',
|
||||
'DATA'),
|
||||
('tk/icons.tcl', '/usr/share/tcltk/tk8.6/icons.tcl', 'DATA'),
|
||||
('tcl/msgs/fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo.msg', 'DATA'),
|
||||
('tk/ttk/entry.tcl', '/usr/share/tcltk/tk8.6/ttk/entry.tcl', 'DATA'),
|
||||
('tcl/tclIndex', '/usr/share/tcltk/tcl8.6/tclIndex', 'DATA'),
|
||||
('tcl/msgs/is.msg', '/usr/share/tcltk/tcl8.6/msgs/is.msg', 'DATA'),
|
||||
('tcl/msgs/es_hn.msg', '/usr/share/tcltk/tcl8.6/msgs/es_hn.msg', 'DATA'),
|
||||
('tcl/tcl8/tcltest-2.4.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/tcltest-2.4.1.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/dingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/dingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb2312-raw.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312-raw.enc',
|
||||
'DATA'),
|
||||
('tk/iconlist.tcl', '/usr/share/tcltk/tk8.6/iconlist.tcl', 'DATA'),
|
||||
('tcl/encoding/macGreek.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macGreek.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/button.tcl', '/usr/share/tcltk/tk8.6/ttk/button.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-5.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ja.msg', '/usr/share/tcltk/tcl8.6/msgs/ja.msg', 'DATA'),
|
||||
('tcl/encoding/macDingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macDingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/af_za.msg', '/usr/share/tcltk/tcl8.6/msgs/af_za.msg', 'DATA'),
|
||||
('tcl/msgs/sv.msg', '/usr/share/tcltk/tcl8.6/msgs/sv.msg', 'DATA'),
|
||||
('tcl/msgs/en_au.msg', '/usr/share/tcltk/tcl8.6/msgs/en_au.msg', 'DATA'),
|
||||
('tcl/msgs/fa_ir.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_ir.msg', 'DATA'),
|
||||
('tcl/msgs/be.msg', '/usr/share/tcltk/tcl8.6/msgs/be.msg', 'DATA'),
|
||||
('tk/ttk/defaults.tcl', '/usr/share/tcltk/tk8.6/ttk/defaults.tcl', 'DATA'),
|
||||
('tk/tk.tcl', '/usr/share/tcltk/tk8.6/tk.tcl', 'DATA'),
|
||||
('tk/msgs/sv.msg', '/usr/share/tcltk/tk8.6/msgs/sv.msg', 'DATA'),
|
||||
('tcl/msgs/es_sv.msg', '/usr/share/tcltk/tcl8.6/msgs/es_sv.msg', 'DATA'),
|
||||
('tcl/msgs/ms_my.msg', '/usr/share/tcltk/tcl8.6/msgs/ms_my.msg', 'DATA'),
|
||||
('tcl/msgs/fi.msg', '/usr/share/tcltk/tcl8.6/msgs/fi.msg', 'DATA'),
|
||||
('tcl/opt0.4/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp949.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp949.enc',
|
||||
'DATA'),
|
||||
('tk/comdlg.tcl', '/usr/share/tcltk/tk8.6/comdlg.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-15.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-15.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/clamTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/clamTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/mr.msg', '/usr/share/tcltk/tcl8.6/msgs/mr.msg', 'DATA'),
|
||||
('tcl/msgs/ro.msg', '/usr/share/tcltk/tcl8.6/msgs/ro.msg', 'DATA'),
|
||||
('tcl/msgs/en_in.msg', '/usr/share/tcltk/tcl8.6/msgs/en_in.msg', 'DATA'),
|
||||
('tk/msgs/da.msg', '/usr/share/tcltk/tk8.6/msgs/da.msg', 'DATA'),
|
||||
('tcl/msgs/he.msg', '/usr/share/tcltk/tcl8.6/msgs/he.msg', 'DATA'),
|
||||
('tk/msgs/eo.msg', '/usr/share/tcltk/tk8.6/msgs/eo.msg', 'DATA'),
|
||||
('tcl/msgs/nn.msg', '/usr/share/tcltk/tcl8.6/msgs/nn.msg', 'DATA'),
|
||||
('tcl/msgs/zh_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_hk.msg', 'DATA'),
|
||||
('tcl/msgs/it_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/it_ch.msg', 'DATA'),
|
||||
('tk/msgs/es.msg', '/usr/share/tcltk/tk8.6/msgs/es.msg', 'DATA'),
|
||||
('tk/ttk/combobox.tcl', '/usr/share/tcltk/tk8.6/ttk/combobox.tcl', 'DATA'),
|
||||
('tk/entry.tcl', '/usr/share/tcltk/tk8.6/entry.tcl', 'DATA'),
|
||||
('tcl/msgs/de_be.msg', '/usr/share/tcltk/tcl8.6/msgs/de_be.msg', 'DATA'),
|
||||
('tcl/msgs/lt.msg', '/usr/share/tcltk/tcl8.6/msgs/lt.msg', 'DATA'),
|
||||
('tcl/encoding/cp1258.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1258.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/notebook.tcl', '/usr/share/tcltk/tk8.6/ttk/notebook.tcl', 'DATA'),
|
||||
('tcl/msgs/sq.msg', '/usr/share/tcltk/tcl8.6/msgs/sq.msg', 'DATA'),
|
||||
('tk/unsupported.tcl', '/usr/share/tcltk/tk8.6/unsupported.tcl', 'DATA'),
|
||||
('tcl/encoding/koi8-r.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-r.enc',
|
||||
'DATA'),
|
||||
('tcl/tcl8/platform/shell-1.1.4.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform/shell-1.1.4.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/ebcdic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ebcdic.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ru_ua.msg', '/usr/share/tcltk/tcl8.6/msgs/ru_ua.msg', 'DATA'),
|
||||
('tcl/msgs/en_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ie.msg', 'DATA'),
|
||||
('tcl/encoding/cp869.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp869.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ar_lb.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_lb.msg', 'DATA'),
|
||||
('tcl/msgs/en_za.msg', '/usr/share/tcltk/tcl8.6/msgs/en_za.msg', 'DATA'),
|
||||
('tcl/encoding/macRoman.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRoman.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_py.msg', '/usr/share/tcltk/tcl8.6/msgs/es_py.msg', 'DATA'),
|
||||
('tcl/msgs/hu.msg', '/usr/share/tcltk/tcl8.6/msgs/hu.msg', 'DATA'),
|
||||
('tcl/msgs/zh_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_sg.msg', 'DATA'),
|
||||
('tk/megawidget.tcl', '/usr/share/tcltk/tk8.6/megawidget.tcl', 'DATA'),
|
||||
('tk/tclIndex', '/usr/share/tcltk/tk8.6/tclIndex', 'DATA'),
|
||||
('tcl/history.tcl', '/usr/share/tcltk/tcl8.6/history.tcl', 'DATA'),
|
||||
('tk/msgbox.tcl', '/usr/share/tcltk/tk8.6/msgbox.tcl', 'DATA'),
|
||||
('tcl/msgs/en_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ca.msg', 'DATA'),
|
||||
('tcl/msgs/en_ph.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ph.msg', 'DATA'),
|
||||
('tk/images/logo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logo100.gif',
|
||||
'DATA'),
|
||||
('tk/scrlbar.tcl', '/usr/share/tcltk/tk8.6/scrlbar.tcl', 'DATA'),
|
||||
('tk/msgs/de.msg', '/usr/share/tcltk/tk8.6/msgs/de.msg', 'DATA'),
|
||||
('tcl/msgs/eu.msg', '/usr/share/tcltk/tcl8.6/msgs/eu.msg', 'DATA'),
|
||||
('tcl/msgs/kl_gl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl_gl.msg', 'DATA'),
|
||||
('tk/ttk/vistaTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/vistaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/spinbox.tcl', '/usr/share/tcltk/tk8.6/ttk/spinbox.tcl', 'DATA'),
|
||||
('tk/msgs/el.msg', '/usr/share/tcltk/tk8.6/msgs/el.msg', 'DATA'),
|
||||
('tk/ttk/sizegrip.tcl', '/usr/share/tcltk/tk8.6/ttk/sizegrip.tcl', 'DATA'),
|
||||
('tcl/msgs/id.msg', '/usr/share/tcltk/tcl8.6/msgs/id.msg', 'DATA'),
|
||||
('tcl/encoding/jis0212.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0212.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/en_be.msg', '/usr/share/tcltk/tcl8.6/msgs/en_be.msg', 'DATA'),
|
||||
('tcl/encoding/euc-cn.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-cn.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macJapan.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macJapan.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kw.msg', '/usr/share/tcltk/tcl8.6/msgs/kw.msg', 'DATA'),
|
||||
('tcl/msgs/sl.msg', '/usr/share/tcltk/tcl8.6/msgs/sl.msg', 'DATA'),
|
||||
('tk/ttk/classicTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/classicTheme.tcl',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCroatian.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCroatian.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCyrillic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCyrillic.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fa.msg', '/usr/share/tcltk/tcl8.6/msgs/fa.msg', 'DATA'),
|
||||
('tcl/msgs/ta.msg', '/usr/share/tcltk/tcl8.6/msgs/ta.msg', 'DATA'),
|
||||
('tcl/msgs/en_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tk/images/tai-ku.gif', '/usr/share/tcltk/tk8.6/images/tai-ku.gif', 'DATA'),
|
||||
('tcl/encoding/cp874.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp874.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nl_be.msg', '/usr/share/tcltk/tcl8.6/msgs/nl_be.msg', 'DATA'),
|
||||
('tcl/http1.0/http.tcl', '/usr/share/tcltk/tcl8.6/http1.0/http.tcl', 'DATA'),
|
||||
('tcl/msgs/en_bw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_bw.msg', 'DATA'),
|
||||
('tk/msgs/ru.msg', '/usr/share/tcltk/tk8.6/msgs/ru.msg', 'DATA'),
|
||||
('tcl/msgs/zh.msg', '/usr/share/tcltk/tcl8.6/msgs/zh.msg', 'DATA'),
|
||||
('tk/ttk/menubutton.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/menubutton.tcl',
|
||||
'DATA'),
|
||||
('tcl/msgs/ga_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/ga_ie.msg', 'DATA'),
|
||||
('tcl/msgs/en_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/en_sg.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-2.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-2.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kok_in.msg', '/usr/share/tcltk/tcl8.6/msgs/kok_in.msg', 'DATA'),
|
||||
('tk/msgs/pl.msg', '/usr/share/tcltk/tk8.6/msgs/pl.msg', 'DATA'),
|
||||
('tcl/msgs/ar_jo.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_jo.msg', 'DATA'),
|
||||
('tcl/msgs/ko.msg', '/usr/share/tcltk/tcl8.6/msgs/ko.msg', 'DATA'),
|
||||
('tcl/encoding/cp932.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp932.enc',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo100.gif',
|
||||
'DATA'),
|
||||
('tk/msgs/cs.msg', '/usr/share/tcltk/tk8.6/msgs/cs.msg', 'DATA'),
|
||||
('tcl/msgs/af.msg', '/usr/share/tcltk/tcl8.6/msgs/af.msg', 'DATA'),
|
||||
('tcl/msgs/sw.msg', '/usr/share/tcltk/tcl8.6/msgs/sw.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-16.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-16.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/bn.msg', '/usr/share/tcltk/tcl8.6/msgs/bn.msg', 'DATA'),
|
||||
('tcl/msgs/cs.msg', '/usr/share/tcltk/tcl8.6/msgs/cs.msg', 'DATA'),
|
||||
('tk/dialog.tcl', '/usr/share/tcltk/tk8.6/dialog.tcl', 'DATA'),
|
||||
('tcl/http1.0/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/http1.0/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/panedwindow.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk/images/logo64.gif', '/usr/share/tcltk/tk8.6/images/logo64.gif', 'DATA'),
|
||||
('tk/focus.tcl', '/usr/share/tcltk/tk8.6/focus.tcl', 'DATA'),
|
||||
('tcl/parray.tcl', '/usr/share/tcltk/tcl8.6/parray.tcl', 'DATA'),
|
||||
('tcl/encoding/macTurkish.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macTurkish.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macIceland.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macIceland.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/th.msg', '/usr/share/tcltk/tcl8.6/msgs/th.msg', 'DATA'),
|
||||
('tk/choosedir.tcl', '/usr/share/tcltk/tk8.6/choosedir.tcl', 'DATA'),
|
||||
('tcl/msgs/es_pr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pr.msg', 'DATA'),
|
||||
('tcl/msgs/da.msg', '/usr/share/tcltk/tcl8.6/msgs/da.msg', 'DATA'),
|
||||
('tk/bgerror.tcl', '/usr/share/tcltk/tk8.6/bgerror.tcl', 'DATA'),
|
||||
('tcl/encoding/cp1251.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1251.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/zh_tw.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_tw.msg', 'DATA'),
|
||||
('tcl/encoding/cp1257.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1257.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/et.msg', '/usr/share/tcltk/tcl8.6/msgs/et.msg', 'DATA'),
|
||||
('tk/text.tcl', '/usr/share/tcltk/tk8.6/text.tcl', 'DATA'),
|
||||
('tcl/msgs/bg.msg', '/usr/share/tcltk/tcl8.6/msgs/bg.msg', 'DATA'),
|
||||
('tcl/msgs/te_in.msg', '/usr/share/tcltk/tcl8.6/msgs/te_in.msg', 'DATA'),
|
||||
('tcl/msgs/sk.msg', '/usr/share/tcltk/tcl8.6/msgs/sk.msg', 'DATA'),
|
||||
('tcl/encoding/shiftjis.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/shiftjis.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fr_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ch.msg', 'DATA'),
|
||||
('tk/xmfbox.tcl', '/usr/share/tcltk/tk8.6/xmfbox.tcl', 'DATA'),
|
||||
('tcl/encoding/cp855.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp855.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_pa.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pa.msg', 'DATA'),
|
||||
('tcl/msgs/kok.msg', '/usr/share/tcltk/tcl8.6/msgs/kok.msg', 'DATA'),
|
||||
('tcl/msgs/ar.msg', '/usr/share/tcltk/tcl8.6/msgs/ar.msg', 'DATA'),
|
||||
('tcl/tcl8/msgcat-1.6.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/msgcat-1.6.1.tm',
|
||||
'DATA'),
|
||||
('tcl/opt0.4/optparse.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/optparse.tcl',
|
||||
'DATA'),
|
||||
('tk/spinbox.tcl', '/usr/share/tcltk/tk8.6/spinbox.tcl', 'DATA'),
|
||||
('tcl/encoding/cp863.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp863.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macThai.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macThai.enc',
|
||||
'DATA')],
|
||||
[],
|
||||
False,
|
||||
True,
|
||||
1533892179,
|
||||
[('run',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/bootloader/Linux-64bit/run',
|
||||
'EXECUTABLE')])
|
||||
Binary file not shown.
@ -1,628 +0,0 @@
|
||||
('/root/Downloads/FLO-appStore-master/apps/FloRate/build/rating-client/out00-PKG.pkg',
|
||||
{'BINARY': 1,
|
||||
'DATA': 1,
|
||||
'EXECUTABLE': 1,
|
||||
'EXTENSION': 1,
|
||||
'PYMODULE': 1,
|
||||
'PYSOURCE': 1,
|
||||
'PYZ': 0},
|
||||
[('out00-PYZ.pyz',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/build/rating-client/out00-PYZ.pyz',
|
||||
'PYZ'),
|
||||
('struct', '/usr/lib/python3.6/struct.pyo', 'PYMODULE'),
|
||||
('pyimod01_os_path',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod01_os_path.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod02_archive',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod02_archive.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod03_importers',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod03_importers.pyc',
|
||||
'PYMODULE'),
|
||||
('pyiboot01_bootstrap',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
|
||||
'PYSOURCE'),
|
||||
('pyi_rth__tkinter',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py',
|
||||
'PYSOURCE'),
|
||||
('rating-client',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py',
|
||||
'PYSOURCE'),
|
||||
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||
('resource',
|
||||
'/usr/lib/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_ssl',
|
||||
'/usr/lib/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_hk',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_kr',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_tw',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_cn',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_jp',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_iso2022',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_multibytecodec',
|
||||
'/usr/lib/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_opcode',
|
||||
'/usr/lib/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('readline',
|
||||
'/usr/lib/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('termios',
|
||||
'/usr/lib/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_hashlib',
|
||||
'/usr/lib/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_bz2',
|
||||
'/usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_lzma',
|
||||
'/usr/lib/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_sqlite3',
|
||||
'/usr/lib/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_json',
|
||||
'/usr/lib/python3.6/lib-dynload/_json.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_tkinter',
|
||||
'/usr/lib/python3.6/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('libssl.so.1.1', '/usr/lib/x86_64-linux-gnu/libssl.so.1.1', 'BINARY'),
|
||||
('libcrypto.so.1.1', '/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1', 'BINARY'),
|
||||
('libreadline.so.7', '/lib/x86_64-linux-gnu/libreadline.so.7', 'BINARY'),
|
||||
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||
('libsqlite3.so.0', '/usr/lib/x86_64-linux-gnu/libsqlite3.so.0', 'BINARY'),
|
||||
('libXau.so.6', '/usr/lib/x86_64-linux-gnu/libXau.so.6', 'BINARY'),
|
||||
('libbsd.so.0', '/lib/x86_64-linux-gnu/libbsd.so.0', 'BINARY'),
|
||||
('libuuid.so.1', '/lib/x86_64-linux-gnu/libuuid.so.1', 'BINARY'),
|
||||
('libXrender.so.1', '/usr/lib/x86_64-linux-gnu/libXrender.so.1', 'BINARY'),
|
||||
('libXdmcp.so.6', '/usr/lib/x86_64-linux-gnu/libXdmcp.so.6', 'BINARY'),
|
||||
('libfreetype.so.6', '/usr/lib/x86_64-linux-gnu/libfreetype.so.6', 'BINARY'),
|
||||
('libBLT.2.5.so.8.6', '/usr/lib/libBLT.2.5.so.8.6', 'BINARY'),
|
||||
('libfontconfig.so.1',
|
||||
'/usr/lib/x86_64-linux-gnu/libfontconfig.so.1',
|
||||
'BINARY'),
|
||||
('libX11.so.6', '/usr/lib/x86_64-linux-gnu/libX11.so.6', 'BINARY'),
|
||||
('libXft.so.2', '/usr/lib/x86_64-linux-gnu/libXft.so.2', 'BINARY'),
|
||||
('libXss.so.1', '/usr/lib/x86_64-linux-gnu/libXss.so.1', 'BINARY'),
|
||||
('libtk8.6.so', '/usr/lib/x86_64-linux-gnu/libtk8.6.so', 'BINARY'),
|
||||
('libpng16.so.16', '/usr/lib/x86_64-linux-gnu/libpng16.so.16', 'BINARY'),
|
||||
('libXext.so.6', '/usr/lib/x86_64-linux-gnu/libXext.so.6', 'BINARY'),
|
||||
('libtcl8.6.so', '/usr/lib/x86_64-linux-gnu/libtcl8.6.so', 'BINARY'),
|
||||
('libpython3.6m.so.1.0',
|
||||
'/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0',
|
||||
'BINARY'),
|
||||
('base_library.zip',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/build/rating-client/base_library.zip',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_uy.msg', '/usr/share/tcltk/tcl8.6/msgs/es_uy.msg', 'DATA'),
|
||||
('tk/button.tcl', '/usr/share/tcltk/tk8.6/button.tcl', 'DATA'),
|
||||
('tcl/msgs/it.msg', '/usr/share/tcltk/tcl8.6/msgs/it.msg', 'DATA'),
|
||||
('tk/images/pwrdLogo175.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo175.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_ar.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ar.msg', 'DATA'),
|
||||
('tk/images/pwrdLogo150.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo150.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/en_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/en_hk.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-14.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-14.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp737.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp737.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-13.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-13.enc',
|
||||
'DATA'),
|
||||
('tk/panedwindow.tcl', '/usr/share/tcltk/tk8.6/panedwindow.tcl', 'DATA'),
|
||||
('tk/ttk/altTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/altTheme.tcl', 'DATA'),
|
||||
('tcl/encoding/cp852.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp852.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp857.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp857.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_gt.msg', '/usr/share/tcltk/tcl8.6/msgs/es_gt.msg', 'DATA'),
|
||||
('tcl/msgs/hi_in.msg', '/usr/share/tcltk/tcl8.6/msgs/hi_in.msg', 'DATA'),
|
||||
('tk/tkAppInit.c', '/usr/share/tcltk/tk8.6/tkAppInit.c', 'DATA'),
|
||||
('tcl/encoding/ksc5601.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ksc5601.enc',
|
||||
'DATA'),
|
||||
('tk/images/README', '/usr/share/tcltk/tk8.6/images/README', 'DATA'),
|
||||
('tcl/msgs/uk.msg', '/usr/share/tcltk/tcl8.6/msgs/uk.msg', 'DATA'),
|
||||
('tcl/msgs/es_ec.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ec.msg', 'DATA'),
|
||||
('tcl/tcl8/http-2.8.12.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/http-2.8.12.tm',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo75.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo75.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-3.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-3.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/hr.msg', '/usr/share/tcltk/tcl8.6/msgs/hr.msg', 'DATA'),
|
||||
('tcl/encoding/jis0201.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0201.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_cl.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cl.msg', 'DATA'),
|
||||
('tk/msgs/hu.msg', '/usr/share/tcltk/tk8.6/msgs/hu.msg', 'DATA'),
|
||||
('tk/ttk/aquaTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/aquaTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/de_at.msg', '/usr/share/tcltk/tcl8.6/msgs/de_at.msg', 'DATA'),
|
||||
('tcl/msgs/bn_in.msg', '/usr/share/tcltk/tcl8.6/msgs/bn_in.msg', 'DATA'),
|
||||
('tk/listbox.tcl', '/usr/share/tcltk/tk8.6/listbox.tcl', 'DATA'),
|
||||
('tcl/auto.tcl', '/usr/share/tcltk/tcl8.6/auto.tcl', 'DATA'),
|
||||
('tcl/encoding/iso2022-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ga.msg', '/usr/share/tcltk/tcl8.6/msgs/ga.msg', 'DATA'),
|
||||
('tcl/msgs/fr.msg', '/usr/share/tcltk/tcl8.6/msgs/fr.msg', 'DATA'),
|
||||
('tcl/encoding/iso2022.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022.enc',
|
||||
'DATA'),
|
||||
('tk/menu.tcl', '/usr/share/tcltk/tk8.6/menu.tcl', 'DATA'),
|
||||
('tk/msgs/en.msg', '/usr/share/tcltk/tk8.6/msgs/en.msg', 'DATA'),
|
||||
('tcl/msgs/fr_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ca.msg', 'DATA'),
|
||||
('tcl/encoding/cp862.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp862.enc',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo.eps',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo.eps',
|
||||
'DATA'),
|
||||
('tcl/msgs/mr_in.msg', '/usr/share/tcltk/tcl8.6/msgs/mr_in.msg', 'DATA'),
|
||||
('tcl/tcl8/platform-1.0.14.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform-1.0.14.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1253.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1253.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/scrollbar.tcl', '/usr/share/tcltk/tk8.6/ttk/scrollbar.tcl', 'DATA'),
|
||||
('tcl/msgs/es_ve.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ve.msg', 'DATA'),
|
||||
('tcl/msgs/ar_sy.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_sy.msg', 'DATA'),
|
||||
('tcl/msgs/en_nz.msg', '/usr/share/tcltk/tcl8.6/msgs/en_nz.msg', 'DATA'),
|
||||
('tcl/msgs/kl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl.msg', 'DATA'),
|
||||
('tk/ttk/cursors.tcl', '/usr/share/tcltk/tk8.6/ttk/cursors.tcl', 'DATA'),
|
||||
('tcl/msgs/sr.msg', '/usr/share/tcltk/tcl8.6/msgs/sr.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-7.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-7.enc',
|
||||
'DATA'),
|
||||
('tk/console.tcl', '/usr/share/tcltk/tk8.6/console.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-8.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-8.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_co.msg', '/usr/share/tcltk/tcl8.6/msgs/es_co.msg', 'DATA'),
|
||||
('tcl/msgs/eu_es.msg', '/usr/share/tcltk/tcl8.6/msgs/eu_es.msg', 'DATA'),
|
||||
('tcl/init.tcl', '/usr/share/tcltk/tcl8.6/init.tcl', 'DATA'),
|
||||
('tk/ttk/treeview.tcl', '/usr/share/tcltk/tk8.6/ttk/treeview.tcl', 'DATA'),
|
||||
('tcl/msgs/eo.msg', '/usr/share/tcltk/tcl8.6/msgs/eo.msg', 'DATA'),
|
||||
('tcl/msgs/ta_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ta_in.msg', 'DATA'),
|
||||
('tcl/encoding/cp1255.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1255.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1250.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1250.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/jis0208.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0208.enc',
|
||||
'DATA'),
|
||||
('tk/msgs/fr.msg', '/usr/share/tcltk/tk8.6/msgs/fr.msg', 'DATA'),
|
||||
('tcl/msgs/es_mx.msg', '/usr/share/tcltk/tcl8.6/msgs/es_mx.msg', 'DATA'),
|
||||
('tcl/msgs/pt.msg', '/usr/share/tcltk/tcl8.6/msgs/pt.msg', 'DATA'),
|
||||
('tcl/encoding/big5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/big5.enc',
|
||||
'DATA'),
|
||||
('tk/optMenu.tcl', '/usr/share/tcltk/tk8.6/optMenu.tcl', 'DATA'),
|
||||
('tk/ttk/fonts.tcl', '/usr/share/tcltk/tk8.6/ttk/fonts.tcl', 'DATA'),
|
||||
('tcl/msgs/te.msg', '/usr/share/tcltk/tcl8.6/msgs/te.msg', 'DATA'),
|
||||
('tcl/msgs/fa_in.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_in.msg', 'DATA'),
|
||||
('tcl/msgs/fr_be.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_be.msg', 'DATA'),
|
||||
('tk/ttk/progress.tcl', '/usr/share/tcltk/tk8.6/ttk/progress.tcl', 'DATA'),
|
||||
('tcl/msgs/zh_cn.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_cn.msg', 'DATA'),
|
||||
('tk/ttk/scale.tcl', '/usr/share/tcltk/tk8.6/ttk/scale.tcl', 'DATA'),
|
||||
('tcl/msgs/lv.msg', '/usr/share/tcltk/tcl8.6/msgs/lv.msg', 'DATA'),
|
||||
('tk/tkfbox.tcl', '/usr/share/tcltk/tk8.6/tkfbox.tcl', 'DATA'),
|
||||
('tk/images/logo.eps', '/usr/share/tcltk/tk8.6/images/logo.eps', 'DATA'),
|
||||
('tk/msgs/pt.msg', '/usr/share/tcltk/tk8.6/msgs/pt.msg', 'DATA'),
|
||||
('tk/tearoff.tcl', '/usr/share/tcltk/tk8.6/tearoff.tcl', 'DATA'),
|
||||
('tcl/encoding/cp950.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp950.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nl.msg', '/usr/share/tcltk/tcl8.6/msgs/nl.msg', 'DATA'),
|
||||
('tcl/encoding/cp936.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp936.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/sh.msg', '/usr/share/tcltk/tcl8.6/msgs/sh.msg', 'DATA'),
|
||||
('tk/images/logoMed.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoMed.gif',
|
||||
'DATA'),
|
||||
('tcl/msgs/mt.msg', '/usr/share/tcltk/tcl8.6/msgs/mt.msg', 'DATA'),
|
||||
('tcl/encoding/iso2022-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/hi.msg', '/usr/share/tcltk/tcl8.6/msgs/hi.msg', 'DATA'),
|
||||
('tcl/msgs/ru.msg', '/usr/share/tcltk/tcl8.6/msgs/ru.msg', 'DATA'),
|
||||
('tk/msgs/en_gb.msg', '/usr/share/tcltk/tk8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tk/ttk/xpTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/xpTheme.tcl', 'DATA'),
|
||||
('tcl/word.tcl', '/usr/share/tcltk/tcl8.6/word.tcl', 'DATA'),
|
||||
('tcl/msgs/es_cr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cr.msg', 'DATA'),
|
||||
('tcl/encoding/cp864.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp864.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp437.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp437.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/tis-620.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/tis-620.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/koi8-u.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-u.enc',
|
||||
'DATA'),
|
||||
('tk/safetk.tcl', '/usr/share/tcltk/tk8.6/safetk.tcl', 'DATA'),
|
||||
('tk/images/pwrdLogo200.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo200.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb1988.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb1988.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nb.msg', '/usr/share/tcltk/tcl8.6/msgs/nb.msg', 'DATA'),
|
||||
('tk/msgs/it.msg', '/usr/share/tcltk/tk8.6/msgs/it.msg', 'DATA'),
|
||||
('tk/palette.tcl', '/usr/share/tcltk/tk8.6/palette.tcl', 'DATA'),
|
||||
('tcl/encoding/macCentEuro.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCentEuro.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp861.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp861.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ar_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_in.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-1.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-1.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/pl.msg', '/usr/share/tcltk/tcl8.6/msgs/pl.msg', 'DATA'),
|
||||
('tk/fontchooser.tcl', '/usr/share/tcltk/tk8.6/fontchooser.tcl', 'DATA'),
|
||||
('tcl/msgs/ko_kr.msg', '/usr/share/tcltk/tcl8.6/msgs/ko_kr.msg', 'DATA'),
|
||||
('tcl/msgs/es_bo.msg', '/usr/share/tcltk/tcl8.6/msgs/es_bo.msg', 'DATA'),
|
||||
('tcl/msgs/de.msg', '/usr/share/tcltk/tcl8.6/msgs/de.msg', 'DATA'),
|
||||
('tcl/msgs/vi.msg', '/usr/share/tcltk/tcl8.6/msgs/vi.msg', 'DATA'),
|
||||
('tcl/safe.tcl', '/usr/share/tcltk/tcl8.6/safe.tcl', 'DATA'),
|
||||
('tk/ttk/winTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/winTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/tr.msg', '/usr/share/tcltk/tcl8.6/msgs/tr.msg', 'DATA'),
|
||||
('tcl/msgs/gl_es.msg', '/usr/share/tcltk/tcl8.6/msgs/gl_es.msg', 'DATA'),
|
||||
('tcl/msgs/es_do.msg', '/usr/share/tcltk/tcl8.6/msgs/es_do.msg', 'DATA'),
|
||||
('tk/clrpick.tcl', '/usr/share/tcltk/tk8.6/clrpick.tcl', 'DATA'),
|
||||
('tcl/encoding/cp775.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp775.enc',
|
||||
'DATA'),
|
||||
('tcl/tclAppInit.c', '/usr/share/tcltk/tcl8.6/tclAppInit.c', 'DATA'),
|
||||
('tcl/package.tcl', '/usr/share/tcltk/tcl8.6/package.tcl', 'DATA'),
|
||||
('tcl/msgs/es_pe.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pe.msg', 'DATA'),
|
||||
('tcl/encoding/symbol.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/symbol.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/ttk.tcl', '/usr/share/tcltk/tk8.6/ttk/ttk.tcl', 'DATA'),
|
||||
('tcl/msgs/gv_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/gv_gb.msg', 'DATA'),
|
||||
('tcl/msgs/mk.msg', '/usr/share/tcltk/tcl8.6/msgs/mk.msg', 'DATA'),
|
||||
('tcl/encoding/gb12345.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb12345.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ms.msg', '/usr/share/tcltk/tcl8.6/msgs/ms.msg', 'DATA'),
|
||||
('tcl/msgs/pt_br.msg', '/usr/share/tcltk/tcl8.6/msgs/pt_br.msg', 'DATA'),
|
||||
('tcl/msgs/en_zw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_zw.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-10.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-10.enc',
|
||||
'DATA'),
|
||||
('tk/mkpsenc.tcl', '/usr/share/tcltk/tk8.6/mkpsenc.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-6.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-6.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1256.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1256.enc',
|
||||
'DATA'),
|
||||
('tk/msgs/nl.msg', '/usr/share/tcltk/tk8.6/msgs/nl.msg', 'DATA'),
|
||||
('tcl/msgs/ca.msg', '/usr/share/tcltk/tcl8.6/msgs/ca.msg', 'DATA'),
|
||||
('tcl/encoding/cp865.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp865.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-9.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-9.enc',
|
||||
'DATA'),
|
||||
('tk/images/logoLarge.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoLarge.gif',
|
||||
'DATA'),
|
||||
('tcl/encoding/ascii.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ascii.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kw_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/kw_gb.msg', 'DATA'),
|
||||
('tcl/encoding/cp860.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp860.enc',
|
||||
'DATA'),
|
||||
('tcl/tm.tcl', '/usr/share/tcltk/tcl8.6/tm.tcl', 'DATA'),
|
||||
('tcl/msgs/es_ni.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ni.msg', 'DATA'),
|
||||
('tcl/encoding/euc-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-4.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-4.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macUkraine.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macUkraine.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/el.msg', '/usr/share/tcltk/tcl8.6/msgs/el.msg', 'DATA'),
|
||||
('tk/scale.tcl', '/usr/share/tcltk/tk8.6/scale.tcl', 'DATA'),
|
||||
('tk/obsolete.tcl', '/usr/share/tcltk/tk8.6/obsolete.tcl', 'DATA'),
|
||||
('tcl/msgs/gl.msg', '/usr/share/tcltk/tcl8.6/msgs/gl.msg', 'DATA'),
|
||||
('tcl/msgs/es.msg', '/usr/share/tcltk/tcl8.6/msgs/es.msg', 'DATA'),
|
||||
('tcl/encoding/cp850.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp850.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/utils.tcl', '/usr/share/tcltk/tk8.6/ttk/utils.tcl', 'DATA'),
|
||||
('tcl/encoding/cp1254.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1254.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/gv.msg', '/usr/share/tcltk/tcl8.6/msgs/gv.msg', 'DATA'),
|
||||
('tcl/msgs/id_id.msg', '/usr/share/tcltk/tcl8.6/msgs/id_id.msg', 'DATA'),
|
||||
('tcl/encoding/macRomania.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRomania.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/euc-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp866.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp866.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fo_fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo_fo.msg', 'DATA'),
|
||||
('tcl/clock.tcl', '/usr/share/tcltk/tcl8.6/clock.tcl', 'DATA'),
|
||||
('tcl/encoding/gb2312.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1252.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1252.enc',
|
||||
'DATA'),
|
||||
('tk/icons.tcl', '/usr/share/tcltk/tk8.6/icons.tcl', 'DATA'),
|
||||
('tcl/msgs/fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo.msg', 'DATA'),
|
||||
('tk/ttk/entry.tcl', '/usr/share/tcltk/tk8.6/ttk/entry.tcl', 'DATA'),
|
||||
('tcl/tclIndex', '/usr/share/tcltk/tcl8.6/tclIndex', 'DATA'),
|
||||
('tcl/msgs/is.msg', '/usr/share/tcltk/tcl8.6/msgs/is.msg', 'DATA'),
|
||||
('tcl/msgs/es_hn.msg', '/usr/share/tcltk/tcl8.6/msgs/es_hn.msg', 'DATA'),
|
||||
('tcl/tcl8/tcltest-2.4.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/tcltest-2.4.1.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/dingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/dingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb2312-raw.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312-raw.enc',
|
||||
'DATA'),
|
||||
('tk/iconlist.tcl', '/usr/share/tcltk/tk8.6/iconlist.tcl', 'DATA'),
|
||||
('tcl/encoding/macGreek.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macGreek.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/button.tcl', '/usr/share/tcltk/tk8.6/ttk/button.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-5.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ja.msg', '/usr/share/tcltk/tcl8.6/msgs/ja.msg', 'DATA'),
|
||||
('tcl/encoding/macDingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macDingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/af_za.msg', '/usr/share/tcltk/tcl8.6/msgs/af_za.msg', 'DATA'),
|
||||
('tcl/msgs/sv.msg', '/usr/share/tcltk/tcl8.6/msgs/sv.msg', 'DATA'),
|
||||
('tcl/msgs/en_au.msg', '/usr/share/tcltk/tcl8.6/msgs/en_au.msg', 'DATA'),
|
||||
('tcl/msgs/fa_ir.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_ir.msg', 'DATA'),
|
||||
('tcl/msgs/be.msg', '/usr/share/tcltk/tcl8.6/msgs/be.msg', 'DATA'),
|
||||
('tk/ttk/defaults.tcl', '/usr/share/tcltk/tk8.6/ttk/defaults.tcl', 'DATA'),
|
||||
('tk/tk.tcl', '/usr/share/tcltk/tk8.6/tk.tcl', 'DATA'),
|
||||
('tk/msgs/sv.msg', '/usr/share/tcltk/tk8.6/msgs/sv.msg', 'DATA'),
|
||||
('tcl/msgs/es_sv.msg', '/usr/share/tcltk/tcl8.6/msgs/es_sv.msg', 'DATA'),
|
||||
('tcl/msgs/ms_my.msg', '/usr/share/tcltk/tcl8.6/msgs/ms_my.msg', 'DATA'),
|
||||
('tcl/msgs/fi.msg', '/usr/share/tcltk/tcl8.6/msgs/fi.msg', 'DATA'),
|
||||
('tcl/opt0.4/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp949.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp949.enc',
|
||||
'DATA'),
|
||||
('tk/comdlg.tcl', '/usr/share/tcltk/tk8.6/comdlg.tcl', 'DATA'),
|
||||
('tcl/encoding/iso8859-15.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-15.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/clamTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/clamTheme.tcl', 'DATA'),
|
||||
('tcl/msgs/mr.msg', '/usr/share/tcltk/tcl8.6/msgs/mr.msg', 'DATA'),
|
||||
('tcl/msgs/ro.msg', '/usr/share/tcltk/tcl8.6/msgs/ro.msg', 'DATA'),
|
||||
('tcl/msgs/en_in.msg', '/usr/share/tcltk/tcl8.6/msgs/en_in.msg', 'DATA'),
|
||||
('tk/msgs/da.msg', '/usr/share/tcltk/tk8.6/msgs/da.msg', 'DATA'),
|
||||
('tcl/msgs/he.msg', '/usr/share/tcltk/tcl8.6/msgs/he.msg', 'DATA'),
|
||||
('tk/msgs/eo.msg', '/usr/share/tcltk/tk8.6/msgs/eo.msg', 'DATA'),
|
||||
('tcl/msgs/nn.msg', '/usr/share/tcltk/tcl8.6/msgs/nn.msg', 'DATA'),
|
||||
('tcl/msgs/zh_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_hk.msg', 'DATA'),
|
||||
('tcl/msgs/it_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/it_ch.msg', 'DATA'),
|
||||
('tk/msgs/es.msg', '/usr/share/tcltk/tk8.6/msgs/es.msg', 'DATA'),
|
||||
('tk/ttk/combobox.tcl', '/usr/share/tcltk/tk8.6/ttk/combobox.tcl', 'DATA'),
|
||||
('tk/entry.tcl', '/usr/share/tcltk/tk8.6/entry.tcl', 'DATA'),
|
||||
('tcl/msgs/de_be.msg', '/usr/share/tcltk/tcl8.6/msgs/de_be.msg', 'DATA'),
|
||||
('tcl/msgs/lt.msg', '/usr/share/tcltk/tcl8.6/msgs/lt.msg', 'DATA'),
|
||||
('tcl/encoding/cp1258.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1258.enc',
|
||||
'DATA'),
|
||||
('tk/ttk/notebook.tcl', '/usr/share/tcltk/tk8.6/ttk/notebook.tcl', 'DATA'),
|
||||
('tcl/msgs/sq.msg', '/usr/share/tcltk/tcl8.6/msgs/sq.msg', 'DATA'),
|
||||
('tk/unsupported.tcl', '/usr/share/tcltk/tk8.6/unsupported.tcl', 'DATA'),
|
||||
('tcl/encoding/koi8-r.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-r.enc',
|
||||
'DATA'),
|
||||
('tcl/tcl8/platform/shell-1.1.4.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform/shell-1.1.4.tm',
|
||||
'DATA'),
|
||||
('tcl/encoding/ebcdic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ebcdic.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ru_ua.msg', '/usr/share/tcltk/tcl8.6/msgs/ru_ua.msg', 'DATA'),
|
||||
('tcl/msgs/en_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ie.msg', 'DATA'),
|
||||
('tcl/encoding/cp869.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp869.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/ar_lb.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_lb.msg', 'DATA'),
|
||||
('tcl/msgs/en_za.msg', '/usr/share/tcltk/tcl8.6/msgs/en_za.msg', 'DATA'),
|
||||
('tcl/encoding/macRoman.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRoman.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_py.msg', '/usr/share/tcltk/tcl8.6/msgs/es_py.msg', 'DATA'),
|
||||
('tcl/msgs/hu.msg', '/usr/share/tcltk/tcl8.6/msgs/hu.msg', 'DATA'),
|
||||
('tcl/msgs/zh_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_sg.msg', 'DATA'),
|
||||
('tk/megawidget.tcl', '/usr/share/tcltk/tk8.6/megawidget.tcl', 'DATA'),
|
||||
('tk/tclIndex', '/usr/share/tcltk/tk8.6/tclIndex', 'DATA'),
|
||||
('tcl/history.tcl', '/usr/share/tcltk/tcl8.6/history.tcl', 'DATA'),
|
||||
('tk/msgbox.tcl', '/usr/share/tcltk/tk8.6/msgbox.tcl', 'DATA'),
|
||||
('tcl/msgs/en_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ca.msg', 'DATA'),
|
||||
('tcl/msgs/en_ph.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ph.msg', 'DATA'),
|
||||
('tk/images/logo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logo100.gif',
|
||||
'DATA'),
|
||||
('tk/scrlbar.tcl', '/usr/share/tcltk/tk8.6/scrlbar.tcl', 'DATA'),
|
||||
('tk/msgs/de.msg', '/usr/share/tcltk/tk8.6/msgs/de.msg', 'DATA'),
|
||||
('tcl/msgs/eu.msg', '/usr/share/tcltk/tcl8.6/msgs/eu.msg', 'DATA'),
|
||||
('tcl/msgs/kl_gl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl_gl.msg', 'DATA'),
|
||||
('tk/ttk/vistaTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/vistaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/spinbox.tcl', '/usr/share/tcltk/tk8.6/ttk/spinbox.tcl', 'DATA'),
|
||||
('tk/msgs/el.msg', '/usr/share/tcltk/tk8.6/msgs/el.msg', 'DATA'),
|
||||
('tk/ttk/sizegrip.tcl', '/usr/share/tcltk/tk8.6/ttk/sizegrip.tcl', 'DATA'),
|
||||
('tcl/msgs/id.msg', '/usr/share/tcltk/tcl8.6/msgs/id.msg', 'DATA'),
|
||||
('tcl/encoding/jis0212.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0212.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/en_be.msg', '/usr/share/tcltk/tcl8.6/msgs/en_be.msg', 'DATA'),
|
||||
('tcl/encoding/euc-cn.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-cn.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macJapan.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macJapan.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kw.msg', '/usr/share/tcltk/tcl8.6/msgs/kw.msg', 'DATA'),
|
||||
('tcl/msgs/sl.msg', '/usr/share/tcltk/tcl8.6/msgs/sl.msg', 'DATA'),
|
||||
('tk/ttk/classicTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/classicTheme.tcl',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCroatian.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCroatian.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCyrillic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCyrillic.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fa.msg', '/usr/share/tcltk/tcl8.6/msgs/fa.msg', 'DATA'),
|
||||
('tcl/msgs/ta.msg', '/usr/share/tcltk/tcl8.6/msgs/ta.msg', 'DATA'),
|
||||
('tcl/msgs/en_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tk/images/tai-ku.gif', '/usr/share/tcltk/tk8.6/images/tai-ku.gif', 'DATA'),
|
||||
('tcl/encoding/cp874.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp874.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/nl_be.msg', '/usr/share/tcltk/tcl8.6/msgs/nl_be.msg', 'DATA'),
|
||||
('tcl/http1.0/http.tcl', '/usr/share/tcltk/tcl8.6/http1.0/http.tcl', 'DATA'),
|
||||
('tcl/msgs/en_bw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_bw.msg', 'DATA'),
|
||||
('tk/msgs/ru.msg', '/usr/share/tcltk/tk8.6/msgs/ru.msg', 'DATA'),
|
||||
('tcl/msgs/zh.msg', '/usr/share/tcltk/tcl8.6/msgs/zh.msg', 'DATA'),
|
||||
('tk/ttk/menubutton.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/menubutton.tcl',
|
||||
'DATA'),
|
||||
('tcl/msgs/ga_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/ga_ie.msg', 'DATA'),
|
||||
('tcl/msgs/en_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/en_sg.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-2.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-2.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/kok_in.msg', '/usr/share/tcltk/tcl8.6/msgs/kok_in.msg', 'DATA'),
|
||||
('tk/msgs/pl.msg', '/usr/share/tcltk/tk8.6/msgs/pl.msg', 'DATA'),
|
||||
('tcl/msgs/ar_jo.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_jo.msg', 'DATA'),
|
||||
('tcl/msgs/ko.msg', '/usr/share/tcltk/tcl8.6/msgs/ko.msg', 'DATA'),
|
||||
('tcl/encoding/cp932.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp932.enc',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo100.gif',
|
||||
'DATA'),
|
||||
('tk/msgs/cs.msg', '/usr/share/tcltk/tk8.6/msgs/cs.msg', 'DATA'),
|
||||
('tcl/msgs/af.msg', '/usr/share/tcltk/tcl8.6/msgs/af.msg', 'DATA'),
|
||||
('tcl/msgs/sw.msg', '/usr/share/tcltk/tcl8.6/msgs/sw.msg', 'DATA'),
|
||||
('tcl/encoding/iso8859-16.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-16.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/bn.msg', '/usr/share/tcltk/tcl8.6/msgs/bn.msg', 'DATA'),
|
||||
('tcl/msgs/cs.msg', '/usr/share/tcltk/tcl8.6/msgs/cs.msg', 'DATA'),
|
||||
('tk/dialog.tcl', '/usr/share/tcltk/tk8.6/dialog.tcl', 'DATA'),
|
||||
('tcl/http1.0/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/http1.0/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/panedwindow.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk/images/logo64.gif', '/usr/share/tcltk/tk8.6/images/logo64.gif', 'DATA'),
|
||||
('tk/focus.tcl', '/usr/share/tcltk/tk8.6/focus.tcl', 'DATA'),
|
||||
('tcl/parray.tcl', '/usr/share/tcltk/tcl8.6/parray.tcl', 'DATA'),
|
||||
('tcl/encoding/macTurkish.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macTurkish.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macIceland.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macIceland.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/th.msg', '/usr/share/tcltk/tcl8.6/msgs/th.msg', 'DATA'),
|
||||
('tk/choosedir.tcl', '/usr/share/tcltk/tk8.6/choosedir.tcl', 'DATA'),
|
||||
('tcl/msgs/es_pr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pr.msg', 'DATA'),
|
||||
('tcl/msgs/da.msg', '/usr/share/tcltk/tcl8.6/msgs/da.msg', 'DATA'),
|
||||
('tk/bgerror.tcl', '/usr/share/tcltk/tk8.6/bgerror.tcl', 'DATA'),
|
||||
('tcl/encoding/cp1251.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1251.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/zh_tw.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_tw.msg', 'DATA'),
|
||||
('tcl/encoding/cp1257.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1257.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/et.msg', '/usr/share/tcltk/tcl8.6/msgs/et.msg', 'DATA'),
|
||||
('tk/text.tcl', '/usr/share/tcltk/tk8.6/text.tcl', 'DATA'),
|
||||
('tcl/msgs/bg.msg', '/usr/share/tcltk/tcl8.6/msgs/bg.msg', 'DATA'),
|
||||
('tcl/msgs/te_in.msg', '/usr/share/tcltk/tcl8.6/msgs/te_in.msg', 'DATA'),
|
||||
('tcl/msgs/sk.msg', '/usr/share/tcltk/tcl8.6/msgs/sk.msg', 'DATA'),
|
||||
('tcl/encoding/shiftjis.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/shiftjis.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/fr_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ch.msg', 'DATA'),
|
||||
('tk/xmfbox.tcl', '/usr/share/tcltk/tk8.6/xmfbox.tcl', 'DATA'),
|
||||
('tcl/encoding/cp855.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp855.enc',
|
||||
'DATA'),
|
||||
('tcl/msgs/es_pa.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pa.msg', 'DATA'),
|
||||
('tcl/msgs/kok.msg', '/usr/share/tcltk/tcl8.6/msgs/kok.msg', 'DATA'),
|
||||
('tcl/msgs/ar.msg', '/usr/share/tcltk/tcl8.6/msgs/ar.msg', 'DATA'),
|
||||
('tcl/tcl8/msgcat-1.6.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/msgcat-1.6.1.tm',
|
||||
'DATA'),
|
||||
('tcl/opt0.4/optparse.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/optparse.tcl',
|
||||
'DATA'),
|
||||
('tk/spinbox.tcl', '/usr/share/tcltk/tk8.6/spinbox.tcl', 'DATA'),
|
||||
('tcl/encoding/cp863.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp863.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macThai.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macThai.enc',
|
||||
'DATA')],
|
||||
False,
|
||||
False,
|
||||
True)
|
||||
Binary file not shown.
@ -1,184 +0,0 @@
|
||||
('/root/Downloads/FLO-appStore-master/apps/FloRate/build/rating-client/out00-PYZ.pyz',
|
||||
[('posixpath', '/usr/lib/python3.6/posixpath.py', 'PYMODULE'),
|
||||
('_strptime', '/usr/lib/python3.6/_strptime.py', 'PYMODULE'),
|
||||
('datetime', '/usr/lib/python3.6/datetime.py', 'PYMODULE'),
|
||||
('stringprep', '/usr/lib/python3.6/stringprep.py', 'PYMODULE'),
|
||||
('fnmatch', '/usr/lib/python3.6/fnmatch.py', 'PYMODULE'),
|
||||
('struct', '/usr/lib/python3.6/struct.py', 'PYMODULE'),
|
||||
('_compat_pickle', '/usr/lib/python3.6/_compat_pickle.py', 'PYMODULE'),
|
||||
('__future__', '/usr/lib/python3.6/__future__.py', 'PYMODULE'),
|
||||
('difflib', '/usr/lib/python3.6/difflib.py', 'PYMODULE'),
|
||||
('ast', '/usr/lib/python3.6/ast.py', 'PYMODULE'),
|
||||
('inspect', '/usr/lib/python3.6/inspect.py', 'PYMODULE'),
|
||||
('cmd', '/usr/lib/python3.6/cmd.py', 'PYMODULE'),
|
||||
('bdb', '/usr/lib/python3.6/bdb.py', 'PYMODULE'),
|
||||
('opcode', '/usr/lib/python3.6/opcode.py', 'PYMODULE'),
|
||||
('dis', '/usr/lib/python3.6/dis.py', 'PYMODULE'),
|
||||
('codeop', '/usr/lib/python3.6/codeop.py', 'PYMODULE'),
|
||||
('code', '/usr/lib/python3.6/code.py', 'PYMODULE'),
|
||||
('glob', '/usr/lib/python3.6/glob.py', 'PYMODULE'),
|
||||
('shlex', '/usr/lib/python3.6/shlex.py', 'PYMODULE'),
|
||||
('importlib._bootstrap',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap.py',
|
||||
'PYMODULE'),
|
||||
('importlib._bootstrap_external',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap_external.py',
|
||||
'PYMODULE'),
|
||||
('importlib.machinery',
|
||||
'/usr/lib/python3.6/importlib/machinery.py',
|
||||
'PYMODULE'),
|
||||
('importlib.util', '/usr/lib/python3.6/importlib/util.py', 'PYMODULE'),
|
||||
('importlib.abc', '/usr/lib/python3.6/importlib/abc.py', 'PYMODULE'),
|
||||
('importlib', '/usr/lib/python3.6/importlib/__init__.py', 'PYMODULE'),
|
||||
('pkgutil', '/usr/lib/python3.6/pkgutil.py', 'PYMODULE'),
|
||||
('xml', '/usr/lib/python3.6/xml/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.expatreader',
|
||||
'/usr/lib/python3.6/xml/sax/expatreader.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.saxutils', '/usr/lib/python3.6/xml/sax/saxutils.py', 'PYMODULE'),
|
||||
('urllib.request', '/usr/lib/python3.6/urllib/request.py', 'PYMODULE'),
|
||||
('getpass', '/usr/lib/python3.6/getpass.py', 'PYMODULE'),
|
||||
('nturl2path', '/usr/lib/python3.6/nturl2path.py', 'PYMODULE'),
|
||||
('ftplib', '/usr/lib/python3.6/ftplib.py', 'PYMODULE'),
|
||||
('netrc', '/usr/lib/python3.6/netrc.py', 'PYMODULE'),
|
||||
('http.cookiejar', '/usr/lib/python3.6/http/cookiejar.py', 'PYMODULE'),
|
||||
('urllib.response', '/usr/lib/python3.6/urllib/response.py', 'PYMODULE'),
|
||||
('urllib.error', '/usr/lib/python3.6/urllib/error.py', 'PYMODULE'),
|
||||
('xml.sax', '/usr/lib/python3.6/xml/sax/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.handler', '/usr/lib/python3.6/xml/sax/handler.py', 'PYMODULE'),
|
||||
('xml.sax._exceptions',
|
||||
'/usr/lib/python3.6/xml/sax/_exceptions.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.xmlreader', '/usr/lib/python3.6/xml/sax/xmlreader.py', 'PYMODULE'),
|
||||
('xml.parsers', '/usr/lib/python3.6/xml/parsers/__init__.py', 'PYMODULE'),
|
||||
('xml.parsers.expat', '/usr/lib/python3.6/xml/parsers/expat.py', 'PYMODULE'),
|
||||
('plistlib', '/usr/lib/python3.6/plistlib.py', 'PYMODULE'),
|
||||
('platform', '/usr/lib/python3.6/platform.py', 'PYMODULE'),
|
||||
('token', '/usr/lib/python3.6/token.py', 'PYMODULE'),
|
||||
('tokenize', '/usr/lib/python3.6/tokenize.py', 'PYMODULE'),
|
||||
('urllib.parse', '/usr/lib/python3.6/urllib/parse.py', 'PYMODULE'),
|
||||
('tempfile', '/usr/lib/python3.6/tempfile.py', 'PYMODULE'),
|
||||
('tty', '/usr/lib/python3.6/tty.py', 'PYMODULE'),
|
||||
('pydoc_data', '/usr/lib/python3.6/pydoc_data/__init__.py', 'PYMODULE'),
|
||||
('pydoc_data.topics', '/usr/lib/python3.6/pydoc_data/topics.py', 'PYMODULE'),
|
||||
('html.entities', '/usr/lib/python3.6/html/entities.py', 'PYMODULE'),
|
||||
('html', '/usr/lib/python3.6/html/__init__.py', 'PYMODULE'),
|
||||
('ipaddress', '/usr/lib/python3.6/ipaddress.py', 'PYMODULE'),
|
||||
('ssl', '/usr/lib/python3.6/ssl.py', 'PYMODULE'),
|
||||
('http.client', '/usr/lib/python3.6/http/client.py', 'PYMODULE'),
|
||||
('mimetypes', '/usr/lib/python3.6/mimetypes.py', 'PYMODULE'),
|
||||
('socketserver', '/usr/lib/python3.6/socketserver.py', 'PYMODULE'),
|
||||
('http', '/usr/lib/python3.6/http/__init__.py', 'PYMODULE'),
|
||||
('http.server', '/usr/lib/python3.6/http/server.py', 'PYMODULE'),
|
||||
('optparse', '/usr/lib/python3.6/optparse.py', 'PYMODULE'),
|
||||
('uu', '/usr/lib/python3.6/uu.py', 'PYMODULE'),
|
||||
('quopri', '/usr/lib/python3.6/quopri.py', 'PYMODULE'),
|
||||
('email.feedparser', '/usr/lib/python3.6/email/feedparser.py', 'PYMODULE'),
|
||||
('email.parser', '/usr/lib/python3.6/email/parser.py', 'PYMODULE'),
|
||||
('email', '/usr/lib/python3.6/email/__init__.py', 'PYMODULE'),
|
||||
('calendar', '/usr/lib/python3.6/calendar.py', 'PYMODULE'),
|
||||
('email._parseaddr', '/usr/lib/python3.6/email/_parseaddr.py', 'PYMODULE'),
|
||||
('email.utils', '/usr/lib/python3.6/email/utils.py', 'PYMODULE'),
|
||||
('email.errors', '/usr/lib/python3.6/email/errors.py', 'PYMODULE'),
|
||||
('email.header', '/usr/lib/python3.6/email/header.py', 'PYMODULE'),
|
||||
('email._policybase', '/usr/lib/python3.6/email/_policybase.py', 'PYMODULE'),
|
||||
('email.base64mime', '/usr/lib/python3.6/email/base64mime.py', 'PYMODULE'),
|
||||
('email.encoders', '/usr/lib/python3.6/email/encoders.py', 'PYMODULE'),
|
||||
('email.charset', '/usr/lib/python3.6/email/charset.py', 'PYMODULE'),
|
||||
('base64', '/usr/lib/python3.6/base64.py', 'PYMODULE'),
|
||||
('email._encoded_words',
|
||||
'/usr/lib/python3.6/email/_encoded_words.py',
|
||||
'PYMODULE'),
|
||||
('hashlib', '/usr/lib/python3.6/hashlib.py', 'PYMODULE'),
|
||||
('bisect', '/usr/lib/python3.6/bisect.py', 'PYMODULE'),
|
||||
('random', '/usr/lib/python3.6/random.py', 'PYMODULE'),
|
||||
('email.generator', '/usr/lib/python3.6/email/generator.py', 'PYMODULE'),
|
||||
('email.iterators', '/usr/lib/python3.6/email/iterators.py', 'PYMODULE'),
|
||||
('urllib', '/usr/lib/python3.6/urllib/__init__.py', 'PYMODULE'),
|
||||
('email._header_value_parser',
|
||||
'/usr/lib/python3.6/email/_header_value_parser.py',
|
||||
'PYMODULE'),
|
||||
('email.headerregistry',
|
||||
'/usr/lib/python3.6/email/headerregistry.py',
|
||||
'PYMODULE'),
|
||||
('email.quoprimime', '/usr/lib/python3.6/email/quoprimime.py', 'PYMODULE'),
|
||||
('email.contentmanager',
|
||||
'/usr/lib/python3.6/email/contentmanager.py',
|
||||
'PYMODULE'),
|
||||
('email.policy', '/usr/lib/python3.6/email/policy.py', 'PYMODULE'),
|
||||
('email.message', '/usr/lib/python3.6/email/message.py', 'PYMODULE'),
|
||||
('bz2', '/usr/lib/python3.6/bz2.py', 'PYMODULE'),
|
||||
('lzma', '/usr/lib/python3.6/lzma.py', 'PYMODULE'),
|
||||
('_compression', '/usr/lib/python3.6/_compression.py', 'PYMODULE'),
|
||||
('gzip', '/usr/lib/python3.6/gzip.py', 'PYMODULE'),
|
||||
('tarfile', '/usr/lib/python3.6/tarfile.py', 'PYMODULE'),
|
||||
('py_compile', '/usr/lib/python3.6/py_compile.py', 'PYMODULE'),
|
||||
('zipfile', '/usr/lib/python3.6/zipfile.py', 'PYMODULE'),
|
||||
('shutil', '/usr/lib/python3.6/shutil.py', 'PYMODULE'),
|
||||
('socket', '/usr/lib/python3.6/socket.py', 'PYMODULE'),
|
||||
('webbrowser', '/usr/lib/python3.6/webbrowser.py', 'PYMODULE'),
|
||||
('pydoc', '/usr/lib/python3.6/pydoc.py', 'PYMODULE'),
|
||||
('getopt', '/usr/lib/python3.6/getopt.py', 'PYMODULE'),
|
||||
('pdb', '/usr/lib/python3.6/pdb.py', 'PYMODULE'),
|
||||
('unittest.util', '/usr/lib/python3.6/unittest/util.py', 'PYMODULE'),
|
||||
('unittest.result', '/usr/lib/python3.6/unittest/result.py', 'PYMODULE'),
|
||||
('logging', '/usr/lib/python3.6/logging/__init__.py', 'PYMODULE'),
|
||||
('unittest.case', '/usr/lib/python3.6/unittest/case.py', 'PYMODULE'),
|
||||
('unittest.suite', '/usr/lib/python3.6/unittest/suite.py', 'PYMODULE'),
|
||||
('unittest.loader', '/usr/lib/python3.6/unittest/loader.py', 'PYMODULE'),
|
||||
('unittest.runner', '/usr/lib/python3.6/unittest/runner.py', 'PYMODULE'),
|
||||
('unittest.main', '/usr/lib/python3.6/unittest/main.py', 'PYMODULE'),
|
||||
('unittest.signals', '/usr/lib/python3.6/unittest/signals.py', 'PYMODULE'),
|
||||
('unittest', '/usr/lib/python3.6/unittest/__init__.py', 'PYMODULE'),
|
||||
('doctest', '/usr/lib/python3.6/doctest.py', 'PYMODULE'),
|
||||
('stat', '/usr/lib/python3.6/stat.py', 'PYMODULE'),
|
||||
('genericpath', '/usr/lib/python3.6/genericpath.py', 'PYMODULE'),
|
||||
('string', '/usr/lib/python3.6/string.py', 'PYMODULE'),
|
||||
('ntpath', '/usr/lib/python3.6/ntpath.py', 'PYMODULE'),
|
||||
('enum', '/usr/lib/python3.6/enum.py', 'PYMODULE'),
|
||||
('signal', '/usr/lib/python3.6/signal.py', 'PYMODULE'),
|
||||
('contextlib', '/usr/lib/python3.6/contextlib.py', 'PYMODULE'),
|
||||
('_threading_local', '/usr/lib/python3.6/_threading_local.py', 'PYMODULE'),
|
||||
('threading', '/usr/lib/python3.6/threading.py', 'PYMODULE'),
|
||||
('selectors', '/usr/lib/python3.6/selectors.py', 'PYMODULE'),
|
||||
('dummy_threading', '/usr/lib/python3.6/dummy_threading.py', 'PYMODULE'),
|
||||
('subprocess', '/usr/lib/python3.6/subprocess.py', 'PYMODULE'),
|
||||
('os', '/usr/lib/python3.6/os.py', 'PYMODULE'),
|
||||
('textwrap', '/usr/lib/python3.6/textwrap.py', 'PYMODULE'),
|
||||
('gettext', '/usr/lib/python3.6/gettext.py', 'PYMODULE'),
|
||||
('argparse', '/usr/lib/python3.6/argparse.py', 'PYMODULE'),
|
||||
('pprint', '/usr/lib/python3.6/pprint.py', 'PYMODULE'),
|
||||
('pickle', '/usr/lib/python3.6/pickle.py', 'PYMODULE'),
|
||||
('tracemalloc', '/usr/lib/python3.6/tracemalloc.py', 'PYMODULE'),
|
||||
('warnings', '/usr/lib/python3.6/warnings.py', 'PYMODULE'),
|
||||
('copy', '/usr/lib/python3.6/copy.py', 'PYMODULE'),
|
||||
('_dummy_thread', '/usr/lib/python3.6/_dummy_thread.py', 'PYMODULE'),
|
||||
('SF', '/root/Downloads/FLO-appStore-master/apps/FloRate/SF.py', 'PYMODULE'),
|
||||
('tkinter.ttk', '/usr/lib/python3.6/tkinter/ttk.py', 'PYMODULE'),
|
||||
('DataCenter',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/DataCenter/__init__.py',
|
||||
'PYMODULE'),
|
||||
('DataCenter.DataCenter',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/DataCenter/DataCenter.py',
|
||||
'PYMODULE'),
|
||||
('sqlite3', '/usr/lib/python3.6/sqlite3/__init__.py', 'PYMODULE'),
|
||||
('sqlite3.dump', '/usr/lib/python3.6/sqlite3/dump.py', 'PYMODULE'),
|
||||
('sqlite3.dbapi2', '/usr/lib/python3.6/sqlite3/dbapi2.py', 'PYMODULE'),
|
||||
('Transaction',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/Transaction/__init__.py',
|
||||
'PYMODULE'),
|
||||
('Transaction.TM',
|
||||
'/root/Downloads/FLO-appStore-master/apps/FloRate/Transaction/TM.py',
|
||||
'PYMODULE'),
|
||||
('json', '/usr/lib/python3.6/json/__init__.py', 'PYMODULE'),
|
||||
('json.encoder', '/usr/lib/python3.6/json/encoder.py', 'PYMODULE'),
|
||||
('json.decoder', '/usr/lib/python3.6/json/decoder.py', 'PYMODULE'),
|
||||
('json.scanner', '/usr/lib/python3.6/json/scanner.py', 'PYMODULE'),
|
||||
('tkinter.messagebox',
|
||||
'/usr/lib/python3.6/tkinter/messagebox.py',
|
||||
'PYMODULE'),
|
||||
('tkinter.commondialog',
|
||||
'/usr/lib/python3.6/tkinter/commondialog.py',
|
||||
'PYMODULE'),
|
||||
('tkinter', '/usr/lib/python3.6/tkinter/__init__.py', 'PYMODULE'),
|
||||
('tkinter.constants', '/usr/lib/python3.6/tkinter/constants.py', 'PYMODULE')])
|
||||
@ -1,401 +0,0 @@
|
||||
('/usr/share/tcltk/tcl8.6',
|
||||
'tcl',
|
||||
['demos', '*.lib', 'tclConfig.sh'],
|
||||
'DATA',
|
||||
[('tcl/tclAppInit.c', '/usr/share/tcltk/tcl8.6/tclAppInit.c', 'DATA'),
|
||||
('tcl/history.tcl', '/usr/share/tcltk/tcl8.6/history.tcl', 'DATA'),
|
||||
('tcl/parray.tcl', '/usr/share/tcltk/tcl8.6/parray.tcl', 'DATA'),
|
||||
('tcl/init.tcl', '/usr/share/tcltk/tcl8.6/init.tcl', 'DATA'),
|
||||
('tcl/clock.tcl', '/usr/share/tcltk/tcl8.6/clock.tcl', 'DATA'),
|
||||
('tcl/tm.tcl', '/usr/share/tcltk/tcl8.6/tm.tcl', 'DATA'),
|
||||
('tcl/tclIndex', '/usr/share/tcltk/tcl8.6/tclIndex', 'DATA'),
|
||||
('tcl/word.tcl', '/usr/share/tcltk/tcl8.6/word.tcl', 'DATA'),
|
||||
('tcl/safe.tcl', '/usr/share/tcltk/tcl8.6/safe.tcl', 'DATA'),
|
||||
('tcl/package.tcl', '/usr/share/tcltk/tcl8.6/package.tcl', 'DATA'),
|
||||
('tcl/auto.tcl', '/usr/share/tcltk/tcl8.6/auto.tcl', 'DATA'),
|
||||
('tcl/msgs/hr.msg', '/usr/share/tcltk/tcl8.6/msgs/hr.msg', 'DATA'),
|
||||
('tcl/msgs/sw.msg', '/usr/share/tcltk/tcl8.6/msgs/sw.msg', 'DATA'),
|
||||
('tcl/msgs/es_pe.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pe.msg', 'DATA'),
|
||||
('tcl/msgs/ga_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/ga_ie.msg', 'DATA'),
|
||||
('tcl/msgs/de_be.msg', '/usr/share/tcltk/tcl8.6/msgs/de_be.msg', 'DATA'),
|
||||
('tcl/msgs/es_mx.msg', '/usr/share/tcltk/tcl8.6/msgs/es_mx.msg', 'DATA'),
|
||||
('tcl/msgs/kw_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/kw_gb.msg', 'DATA'),
|
||||
('tcl/msgs/en_za.msg', '/usr/share/tcltk/tcl8.6/msgs/en_za.msg', 'DATA'),
|
||||
('tcl/msgs/ru_ua.msg', '/usr/share/tcltk/tcl8.6/msgs/ru_ua.msg', 'DATA'),
|
||||
('tcl/msgs/sl.msg', '/usr/share/tcltk/tcl8.6/msgs/sl.msg', 'DATA'),
|
||||
('tcl/msgs/he.msg', '/usr/share/tcltk/tcl8.6/msgs/he.msg', 'DATA'),
|
||||
('tcl/msgs/pt_br.msg', '/usr/share/tcltk/tcl8.6/msgs/pt_br.msg', 'DATA'),
|
||||
('tcl/msgs/en_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/en_sg.msg', 'DATA'),
|
||||
('tcl/msgs/mr_in.msg', '/usr/share/tcltk/tcl8.6/msgs/mr_in.msg', 'DATA'),
|
||||
('tcl/msgs/pl.msg', '/usr/share/tcltk/tcl8.6/msgs/pl.msg', 'DATA'),
|
||||
('tcl/msgs/lt.msg', '/usr/share/tcltk/tcl8.6/msgs/lt.msg', 'DATA'),
|
||||
('tcl/msgs/ro.msg', '/usr/share/tcltk/tcl8.6/msgs/ro.msg', 'DATA'),
|
||||
('tcl/msgs/fr_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ca.msg', 'DATA'),
|
||||
('tcl/msgs/zh_tw.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_tw.msg', 'DATA'),
|
||||
('tcl/msgs/es_cr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cr.msg', 'DATA'),
|
||||
('tcl/msgs/en_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/en_hk.msg', 'DATA'),
|
||||
('tcl/msgs/fr.msg', '/usr/share/tcltk/tcl8.6/msgs/fr.msg', 'DATA'),
|
||||
('tcl/msgs/fr_be.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_be.msg', 'DATA'),
|
||||
('tcl/msgs/sk.msg', '/usr/share/tcltk/tcl8.6/msgs/sk.msg', 'DATA'),
|
||||
('tcl/msgs/ko.msg', '/usr/share/tcltk/tcl8.6/msgs/ko.msg', 'DATA'),
|
||||
('tcl/msgs/es_ec.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ec.msg', 'DATA'),
|
||||
('tcl/msgs/hu.msg', '/usr/share/tcltk/tcl8.6/msgs/hu.msg', 'DATA'),
|
||||
('tcl/msgs/th.msg', '/usr/share/tcltk/tcl8.6/msgs/th.msg', 'DATA'),
|
||||
('tcl/msgs/af_za.msg', '/usr/share/tcltk/tcl8.6/msgs/af_za.msg', 'DATA'),
|
||||
('tcl/msgs/es_pa.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pa.msg', 'DATA'),
|
||||
('tcl/msgs/eo.msg', '/usr/share/tcltk/tcl8.6/msgs/eo.msg', 'DATA'),
|
||||
('tcl/msgs/es.msg', '/usr/share/tcltk/tcl8.6/msgs/es.msg', 'DATA'),
|
||||
('tcl/msgs/es_ve.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ve.msg', 'DATA'),
|
||||
('tcl/msgs/en_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tcl/msgs/tr.msg', '/usr/share/tcltk/tcl8.6/msgs/tr.msg', 'DATA'),
|
||||
('tcl/msgs/lv.msg', '/usr/share/tcltk/tcl8.6/msgs/lv.msg', 'DATA'),
|
||||
('tcl/msgs/en_in.msg', '/usr/share/tcltk/tcl8.6/msgs/en_in.msg', 'DATA'),
|
||||
('tcl/msgs/bg.msg', '/usr/share/tcltk/tcl8.6/msgs/bg.msg', 'DATA'),
|
||||
('tcl/msgs/te.msg', '/usr/share/tcltk/tcl8.6/msgs/te.msg', 'DATA'),
|
||||
('tcl/msgs/ar_lb.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_lb.msg', 'DATA'),
|
||||
('tcl/msgs/ja.msg', '/usr/share/tcltk/tcl8.6/msgs/ja.msg', 'DATA'),
|
||||
('tcl/msgs/de_at.msg', '/usr/share/tcltk/tcl8.6/msgs/de_at.msg', 'DATA'),
|
||||
('tcl/msgs/es_gt.msg', '/usr/share/tcltk/tcl8.6/msgs/es_gt.msg', 'DATA'),
|
||||
('tcl/msgs/id.msg', '/usr/share/tcltk/tcl8.6/msgs/id.msg', 'DATA'),
|
||||
('tcl/msgs/ru.msg', '/usr/share/tcltk/tcl8.6/msgs/ru.msg', 'DATA'),
|
||||
('tcl/msgs/en_bw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_bw.msg', 'DATA'),
|
||||
('tcl/msgs/bn_in.msg', '/usr/share/tcltk/tcl8.6/msgs/bn_in.msg', 'DATA'),
|
||||
('tcl/msgs/es_do.msg', '/usr/share/tcltk/tcl8.6/msgs/es_do.msg', 'DATA'),
|
||||
('tcl/msgs/el.msg', '/usr/share/tcltk/tcl8.6/msgs/el.msg', 'DATA'),
|
||||
('tcl/msgs/ko_kr.msg', '/usr/share/tcltk/tcl8.6/msgs/ko_kr.msg', 'DATA'),
|
||||
('tcl/msgs/en_au.msg', '/usr/share/tcltk/tcl8.6/msgs/en_au.msg', 'DATA'),
|
||||
('tcl/msgs/ar_jo.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_jo.msg', 'DATA'),
|
||||
('tcl/msgs/vi.msg', '/usr/share/tcltk/tcl8.6/msgs/vi.msg', 'DATA'),
|
||||
('tcl/msgs/id_id.msg', '/usr/share/tcltk/tcl8.6/msgs/id_id.msg', 'DATA'),
|
||||
('tcl/msgs/es_cl.msg', '/usr/share/tcltk/tcl8.6/msgs/es_cl.msg', 'DATA'),
|
||||
('tcl/msgs/es_sv.msg', '/usr/share/tcltk/tcl8.6/msgs/es_sv.msg', 'DATA'),
|
||||
('tcl/msgs/es_pr.msg', '/usr/share/tcltk/tcl8.6/msgs/es_pr.msg', 'DATA'),
|
||||
('tcl/msgs/mt.msg', '/usr/share/tcltk/tcl8.6/msgs/mt.msg', 'DATA'),
|
||||
('tcl/msgs/hi.msg', '/usr/share/tcltk/tcl8.6/msgs/hi.msg', 'DATA'),
|
||||
('tcl/msgs/cs.msg', '/usr/share/tcltk/tcl8.6/msgs/cs.msg', 'DATA'),
|
||||
('tcl/msgs/nn.msg', '/usr/share/tcltk/tcl8.6/msgs/nn.msg', 'DATA'),
|
||||
('tcl/msgs/gv.msg', '/usr/share/tcltk/tcl8.6/msgs/gv.msg', 'DATA'),
|
||||
('tcl/msgs/pt.msg', '/usr/share/tcltk/tcl8.6/msgs/pt.msg', 'DATA'),
|
||||
('tcl/msgs/kw.msg', '/usr/share/tcltk/tcl8.6/msgs/kw.msg', 'DATA'),
|
||||
('tcl/msgs/ar_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_in.msg', 'DATA'),
|
||||
('tcl/msgs/af.msg', '/usr/share/tcltk/tcl8.6/msgs/af.msg', 'DATA'),
|
||||
('tcl/msgs/es_co.msg', '/usr/share/tcltk/tcl8.6/msgs/es_co.msg', 'DATA'),
|
||||
('tcl/msgs/zh_sg.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_sg.msg', 'DATA'),
|
||||
('tcl/msgs/et.msg', '/usr/share/tcltk/tcl8.6/msgs/et.msg', 'DATA'),
|
||||
('tcl/msgs/hi_in.msg', '/usr/share/tcltk/tcl8.6/msgs/hi_in.msg', 'DATA'),
|
||||
('tcl/msgs/en_ie.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ie.msg', 'DATA'),
|
||||
('tcl/msgs/ar.msg', '/usr/share/tcltk/tcl8.6/msgs/ar.msg', 'DATA'),
|
||||
('tcl/msgs/ar_sy.msg', '/usr/share/tcltk/tcl8.6/msgs/ar_sy.msg', 'DATA'),
|
||||
('tcl/msgs/sr.msg', '/usr/share/tcltk/tcl8.6/msgs/sr.msg', 'DATA'),
|
||||
('tcl/msgs/fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo.msg', 'DATA'),
|
||||
('tcl/msgs/bn.msg', '/usr/share/tcltk/tcl8.6/msgs/bn.msg', 'DATA'),
|
||||
('tcl/msgs/fo_fo.msg', '/usr/share/tcltk/tcl8.6/msgs/fo_fo.msg', 'DATA'),
|
||||
('tcl/msgs/kl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl.msg', 'DATA'),
|
||||
('tcl/msgs/nl.msg', '/usr/share/tcltk/tcl8.6/msgs/nl.msg', 'DATA'),
|
||||
('tcl/msgs/mr.msg', '/usr/share/tcltk/tcl8.6/msgs/mr.msg', 'DATA'),
|
||||
('tcl/msgs/kok.msg', '/usr/share/tcltk/tcl8.6/msgs/kok.msg', 'DATA'),
|
||||
('tcl/msgs/kl_gl.msg', '/usr/share/tcltk/tcl8.6/msgs/kl_gl.msg', 'DATA'),
|
||||
('tcl/msgs/es_ni.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ni.msg', 'DATA'),
|
||||
('tcl/msgs/fa.msg', '/usr/share/tcltk/tcl8.6/msgs/fa.msg', 'DATA'),
|
||||
('tcl/msgs/en_be.msg', '/usr/share/tcltk/tcl8.6/msgs/en_be.msg', 'DATA'),
|
||||
('tcl/msgs/fa_ir.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_ir.msg', 'DATA'),
|
||||
('tcl/msgs/ms.msg', '/usr/share/tcltk/tcl8.6/msgs/ms.msg', 'DATA'),
|
||||
('tcl/msgs/en_ph.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ph.msg', 'DATA'),
|
||||
('tcl/msgs/ta_in.msg', '/usr/share/tcltk/tcl8.6/msgs/ta_in.msg', 'DATA'),
|
||||
('tcl/msgs/uk.msg', '/usr/share/tcltk/tcl8.6/msgs/uk.msg', 'DATA'),
|
||||
('tcl/msgs/es_ar.msg', '/usr/share/tcltk/tcl8.6/msgs/es_ar.msg', 'DATA'),
|
||||
('tcl/msgs/ms_my.msg', '/usr/share/tcltk/tcl8.6/msgs/ms_my.msg', 'DATA'),
|
||||
('tcl/msgs/sv.msg', '/usr/share/tcltk/tcl8.6/msgs/sv.msg', 'DATA'),
|
||||
('tcl/msgs/da.msg', '/usr/share/tcltk/tcl8.6/msgs/da.msg', 'DATA'),
|
||||
('tcl/msgs/eu.msg', '/usr/share/tcltk/tcl8.6/msgs/eu.msg', 'DATA'),
|
||||
('tcl/msgs/sh.msg', '/usr/share/tcltk/tcl8.6/msgs/sh.msg', 'DATA'),
|
||||
('tcl/msgs/is.msg', '/usr/share/tcltk/tcl8.6/msgs/is.msg', 'DATA'),
|
||||
('tcl/msgs/zh.msg', '/usr/share/tcltk/tcl8.6/msgs/zh.msg', 'DATA'),
|
||||
('tcl/msgs/fa_in.msg', '/usr/share/tcltk/tcl8.6/msgs/fa_in.msg', 'DATA'),
|
||||
('tcl/msgs/nb.msg', '/usr/share/tcltk/tcl8.6/msgs/nb.msg', 'DATA'),
|
||||
('tcl/msgs/zh_hk.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_hk.msg', 'DATA'),
|
||||
('tcl/msgs/eu_es.msg', '/usr/share/tcltk/tcl8.6/msgs/eu_es.msg', 'DATA'),
|
||||
('tcl/msgs/es_py.msg', '/usr/share/tcltk/tcl8.6/msgs/es_py.msg', 'DATA'),
|
||||
('tcl/msgs/es_uy.msg', '/usr/share/tcltk/tcl8.6/msgs/es_uy.msg', 'DATA'),
|
||||
('tcl/msgs/es_bo.msg', '/usr/share/tcltk/tcl8.6/msgs/es_bo.msg', 'DATA'),
|
||||
('tcl/msgs/kok_in.msg', '/usr/share/tcltk/tcl8.6/msgs/kok_in.msg', 'DATA'),
|
||||
('tcl/msgs/te_in.msg', '/usr/share/tcltk/tcl8.6/msgs/te_in.msg', 'DATA'),
|
||||
('tcl/msgs/it_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/it_ch.msg', 'DATA'),
|
||||
('tcl/msgs/ta.msg', '/usr/share/tcltk/tcl8.6/msgs/ta.msg', 'DATA'),
|
||||
('tcl/msgs/ga.msg', '/usr/share/tcltk/tcl8.6/msgs/ga.msg', 'DATA'),
|
||||
('tcl/msgs/fr_ch.msg', '/usr/share/tcltk/tcl8.6/msgs/fr_ch.msg', 'DATA'),
|
||||
('tcl/msgs/gl.msg', '/usr/share/tcltk/tcl8.6/msgs/gl.msg', 'DATA'),
|
||||
('tcl/msgs/gv_gb.msg', '/usr/share/tcltk/tcl8.6/msgs/gv_gb.msg', 'DATA'),
|
||||
('tcl/msgs/mk.msg', '/usr/share/tcltk/tcl8.6/msgs/mk.msg', 'DATA'),
|
||||
('tcl/msgs/gl_es.msg', '/usr/share/tcltk/tcl8.6/msgs/gl_es.msg', 'DATA'),
|
||||
('tcl/msgs/en_nz.msg', '/usr/share/tcltk/tcl8.6/msgs/en_nz.msg', 'DATA'),
|
||||
('tcl/msgs/zh_cn.msg', '/usr/share/tcltk/tcl8.6/msgs/zh_cn.msg', 'DATA'),
|
||||
('tcl/msgs/es_hn.msg', '/usr/share/tcltk/tcl8.6/msgs/es_hn.msg', 'DATA'),
|
||||
('tcl/msgs/ca.msg', '/usr/share/tcltk/tcl8.6/msgs/ca.msg', 'DATA'),
|
||||
('tcl/msgs/en_ca.msg', '/usr/share/tcltk/tcl8.6/msgs/en_ca.msg', 'DATA'),
|
||||
('tcl/msgs/it.msg', '/usr/share/tcltk/tcl8.6/msgs/it.msg', 'DATA'),
|
||||
('tcl/msgs/en_zw.msg', '/usr/share/tcltk/tcl8.6/msgs/en_zw.msg', 'DATA'),
|
||||
('tcl/msgs/de.msg', '/usr/share/tcltk/tcl8.6/msgs/de.msg', 'DATA'),
|
||||
('tcl/msgs/fi.msg', '/usr/share/tcltk/tcl8.6/msgs/fi.msg', 'DATA'),
|
||||
('tcl/msgs/sq.msg', '/usr/share/tcltk/tcl8.6/msgs/sq.msg', 'DATA'),
|
||||
('tcl/msgs/be.msg', '/usr/share/tcltk/tcl8.6/msgs/be.msg', 'DATA'),
|
||||
('tcl/msgs/nl_be.msg', '/usr/share/tcltk/tcl8.6/msgs/nl_be.msg', 'DATA'),
|
||||
('tcl/http1.0/http.tcl', '/usr/share/tcltk/tcl8.6/http1.0/http.tcl', 'DATA'),
|
||||
('tcl/http1.0/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/http1.0/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1257.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1257.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb1988.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb1988.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/euc-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp852.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp852.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macUkraine.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macUkraine.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp874.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp874.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp869.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp869.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/euc-cn.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-cn.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso2022.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCentEuro.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCentEuro.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-3.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-3.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb2312.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/big5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/big5.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macIceland.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macIceland.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1255.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1255.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macGreek.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macGreek.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp850.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp850.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp437.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp437.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-8.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-8.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1252.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1252.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp950.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp950.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/ebcdic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ebcdic.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso2022-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb2312-raw.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb2312-raw.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-13.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-13.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/tis-620.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/tis-620.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macThai.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macThai.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp949.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp949.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/euc-jp.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/euc-jp.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macRomania.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRomania.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-15.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-15.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp860.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp860.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp863.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp863.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/ksc5601.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ksc5601.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/jis0208.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0208.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-7.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-7.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macRoman.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macRoman.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso2022-kr.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso2022-kr.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-5.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-5.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp737.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp737.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-9.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-9.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/gb12345.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/gb12345.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp855.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp855.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp861.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp861.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp865.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp865.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/koi8-u.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-u.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCroatian.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCroatian.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macDingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macDingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-4.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-4.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp932.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp932.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macCyrillic.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macCyrillic.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macTurkish.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macTurkish.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1251.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1251.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1258.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1258.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-1.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-1.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp862.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp862.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/jis0212.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0212.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1253.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1253.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/jis0201.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/jis0201.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-6.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-6.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp864.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp864.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1256.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1256.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp866.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp866.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/dingbats.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/dingbats.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp857.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp857.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp936.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp936.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-2.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-2.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1254.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1254.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/ascii.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/ascii.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp1250.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp1250.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-14.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-14.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-16.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-16.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/shiftjis.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/shiftjis.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/iso8859-10.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/iso8859-10.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/koi8-r.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/koi8-r.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/symbol.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/symbol.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/cp775.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/cp775.enc',
|
||||
'DATA'),
|
||||
('tcl/encoding/macJapan.enc',
|
||||
'/usr/share/tcltk/tcl8.6/encoding/macJapan.enc',
|
||||
'DATA'),
|
||||
('tcl/opt0.4/optparse.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/optparse.tcl',
|
||||
'DATA'),
|
||||
('tcl/opt0.4/pkgIndex.tcl',
|
||||
'/usr/share/tcltk/tcl8.6/opt0.4/pkgIndex.tcl',
|
||||
'DATA'),
|
||||
('tcl/tcl8/http-2.8.12.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/http-2.8.12.tm',
|
||||
'DATA'),
|
||||
('tcl/tcl8/msgcat-1.6.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/msgcat-1.6.1.tm',
|
||||
'DATA'),
|
||||
('tcl/tcl8/tcltest-2.4.1.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/tcltest-2.4.1.tm',
|
||||
'DATA'),
|
||||
('tcl/tcl8/platform-1.0.14.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform-1.0.14.tm',
|
||||
'DATA'),
|
||||
('tcl/tcl8/platform/shell-1.1.4.tm',
|
||||
'/usr/share/tcltk/tcl8.6/tcl8/platform/shell-1.1.4.tm',
|
||||
'DATA')])
|
||||
@ -1,116 +0,0 @@
|
||||
('/usr/share/tcltk/tk8.6',
|
||||
'tk',
|
||||
['demos', '*.lib', 'tkConfig.sh'],
|
||||
'DATA',
|
||||
[('tk/clrpick.tcl', '/usr/share/tcltk/tk8.6/clrpick.tcl', 'DATA'),
|
||||
('tk/dialog.tcl', '/usr/share/tcltk/tk8.6/dialog.tcl', 'DATA'),
|
||||
('tk/text.tcl', '/usr/share/tcltk/tk8.6/text.tcl', 'DATA'),
|
||||
('tk/focus.tcl', '/usr/share/tcltk/tk8.6/focus.tcl', 'DATA'),
|
||||
('tk/tkfbox.tcl', '/usr/share/tcltk/tk8.6/tkfbox.tcl', 'DATA'),
|
||||
('tk/bgerror.tcl', '/usr/share/tcltk/tk8.6/bgerror.tcl', 'DATA'),
|
||||
('tk/tk.tcl', '/usr/share/tcltk/tk8.6/tk.tcl', 'DATA'),
|
||||
('tk/scrlbar.tcl', '/usr/share/tcltk/tk8.6/scrlbar.tcl', 'DATA'),
|
||||
('tk/icons.tcl', '/usr/share/tcltk/tk8.6/icons.tcl', 'DATA'),
|
||||
('tk/safetk.tcl', '/usr/share/tcltk/tk8.6/safetk.tcl', 'DATA'),
|
||||
('tk/obsolete.tcl', '/usr/share/tcltk/tk8.6/obsolete.tcl', 'DATA'),
|
||||
('tk/mkpsenc.tcl', '/usr/share/tcltk/tk8.6/mkpsenc.tcl', 'DATA'),
|
||||
('tk/megawidget.tcl', '/usr/share/tcltk/tk8.6/megawidget.tcl', 'DATA'),
|
||||
('tk/choosedir.tcl', '/usr/share/tcltk/tk8.6/choosedir.tcl', 'DATA'),
|
||||
('tk/msgbox.tcl', '/usr/share/tcltk/tk8.6/msgbox.tcl', 'DATA'),
|
||||
('tk/tclIndex', '/usr/share/tcltk/tk8.6/tclIndex', 'DATA'),
|
||||
('tk/tearoff.tcl', '/usr/share/tcltk/tk8.6/tearoff.tcl', 'DATA'),
|
||||
('tk/optMenu.tcl', '/usr/share/tcltk/tk8.6/optMenu.tcl', 'DATA'),
|
||||
('tk/console.tcl', '/usr/share/tcltk/tk8.6/console.tcl', 'DATA'),
|
||||
('tk/listbox.tcl', '/usr/share/tcltk/tk8.6/listbox.tcl', 'DATA'),
|
||||
('tk/tkAppInit.c', '/usr/share/tcltk/tk8.6/tkAppInit.c', 'DATA'),
|
||||
('tk/iconlist.tcl', '/usr/share/tcltk/tk8.6/iconlist.tcl', 'DATA'),
|
||||
('tk/entry.tcl', '/usr/share/tcltk/tk8.6/entry.tcl', 'DATA'),
|
||||
('tk/palette.tcl', '/usr/share/tcltk/tk8.6/palette.tcl', 'DATA'),
|
||||
('tk/spinbox.tcl', '/usr/share/tcltk/tk8.6/spinbox.tcl', 'DATA'),
|
||||
('tk/button.tcl', '/usr/share/tcltk/tk8.6/button.tcl', 'DATA'),
|
||||
('tk/panedwindow.tcl', '/usr/share/tcltk/tk8.6/panedwindow.tcl', 'DATA'),
|
||||
('tk/scale.tcl', '/usr/share/tcltk/tk8.6/scale.tcl', 'DATA'),
|
||||
('tk/fontchooser.tcl', '/usr/share/tcltk/tk8.6/fontchooser.tcl', 'DATA'),
|
||||
('tk/comdlg.tcl', '/usr/share/tcltk/tk8.6/comdlg.tcl', 'DATA'),
|
||||
('tk/menu.tcl', '/usr/share/tcltk/tk8.6/menu.tcl', 'DATA'),
|
||||
('tk/unsupported.tcl', '/usr/share/tcltk/tk8.6/unsupported.tcl', 'DATA'),
|
||||
('tk/xmfbox.tcl', '/usr/share/tcltk/tk8.6/xmfbox.tcl', 'DATA'),
|
||||
('tk/msgs/pl.msg', '/usr/share/tcltk/tk8.6/msgs/pl.msg', 'DATA'),
|
||||
('tk/msgs/fr.msg', '/usr/share/tcltk/tk8.6/msgs/fr.msg', 'DATA'),
|
||||
('tk/msgs/hu.msg', '/usr/share/tcltk/tk8.6/msgs/hu.msg', 'DATA'),
|
||||
('tk/msgs/eo.msg', '/usr/share/tcltk/tk8.6/msgs/eo.msg', 'DATA'),
|
||||
('tk/msgs/es.msg', '/usr/share/tcltk/tk8.6/msgs/es.msg', 'DATA'),
|
||||
('tk/msgs/en_gb.msg', '/usr/share/tcltk/tk8.6/msgs/en_gb.msg', 'DATA'),
|
||||
('tk/msgs/en.msg', '/usr/share/tcltk/tk8.6/msgs/en.msg', 'DATA'),
|
||||
('tk/msgs/ru.msg', '/usr/share/tcltk/tk8.6/msgs/ru.msg', 'DATA'),
|
||||
('tk/msgs/el.msg', '/usr/share/tcltk/tk8.6/msgs/el.msg', 'DATA'),
|
||||
('tk/msgs/cs.msg', '/usr/share/tcltk/tk8.6/msgs/cs.msg', 'DATA'),
|
||||
('tk/msgs/pt.msg', '/usr/share/tcltk/tk8.6/msgs/pt.msg', 'DATA'),
|
||||
('tk/msgs/nl.msg', '/usr/share/tcltk/tk8.6/msgs/nl.msg', 'DATA'),
|
||||
('tk/msgs/sv.msg', '/usr/share/tcltk/tk8.6/msgs/sv.msg', 'DATA'),
|
||||
('tk/msgs/da.msg', '/usr/share/tcltk/tk8.6/msgs/da.msg', 'DATA'),
|
||||
('tk/msgs/it.msg', '/usr/share/tcltk/tk8.6/msgs/it.msg', 'DATA'),
|
||||
('tk/msgs/de.msg', '/usr/share/tcltk/tk8.6/msgs/de.msg', 'DATA'),
|
||||
('tk/images/pwrdLogo75.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo75.gif',
|
||||
'DATA'),
|
||||
('tk/images/tai-ku.gif', '/usr/share/tcltk/tk8.6/images/tai-ku.gif', 'DATA'),
|
||||
('tk/images/logo.eps', '/usr/share/tcltk/tk8.6/images/logo.eps', 'DATA'),
|
||||
('tk/images/logo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logo100.gif',
|
||||
'DATA'),
|
||||
('tk/images/logoLarge.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoLarge.gif',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo175.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo175.gif',
|
||||
'DATA'),
|
||||
('tk/images/README', '/usr/share/tcltk/tk8.6/images/README', 'DATA'),
|
||||
('tk/images/pwrdLogo100.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo100.gif',
|
||||
'DATA'),
|
||||
('tk/images/logo64.gif', '/usr/share/tcltk/tk8.6/images/logo64.gif', 'DATA'),
|
||||
('tk/images/pwrdLogo150.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo150.gif',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo.eps',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo.eps',
|
||||
'DATA'),
|
||||
('tk/images/pwrdLogo200.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/pwrdLogo200.gif',
|
||||
'DATA'),
|
||||
('tk/images/logoMed.gif',
|
||||
'/usr/share/tcltk/tk8.6/images/logoMed.gif',
|
||||
'DATA'),
|
||||
('tk/ttk/clamTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/clamTheme.tcl', 'DATA'),
|
||||
('tk/ttk/fonts.tcl', '/usr/share/tcltk/tk8.6/ttk/fonts.tcl', 'DATA'),
|
||||
('tk/ttk/cursors.tcl', '/usr/share/tcltk/tk8.6/ttk/cursors.tcl', 'DATA'),
|
||||
('tk/ttk/utils.tcl', '/usr/share/tcltk/tk8.6/ttk/utils.tcl', 'DATA'),
|
||||
('tk/ttk/winTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/winTheme.tcl', 'DATA'),
|
||||
('tk/ttk/sizegrip.tcl', '/usr/share/tcltk/tk8.6/ttk/sizegrip.tcl', 'DATA'),
|
||||
('tk/ttk/notebook.tcl', '/usr/share/tcltk/tk8.6/ttk/notebook.tcl', 'DATA'),
|
||||
('tk/ttk/vistaTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/vistaTheme.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/classicTheme.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/classicTheme.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/defaults.tcl', '/usr/share/tcltk/tk8.6/ttk/defaults.tcl', 'DATA'),
|
||||
('tk/ttk/menubutton.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/menubutton.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/altTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/altTheme.tcl', 'DATA'),
|
||||
('tk/ttk/progress.tcl', '/usr/share/tcltk/tk8.6/ttk/progress.tcl', 'DATA'),
|
||||
('tk/ttk/aquaTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/aquaTheme.tcl', 'DATA'),
|
||||
('tk/ttk/xpTheme.tcl', '/usr/share/tcltk/tk8.6/ttk/xpTheme.tcl', 'DATA'),
|
||||
('tk/ttk/entry.tcl', '/usr/share/tcltk/tk8.6/ttk/entry.tcl', 'DATA'),
|
||||
('tk/ttk/treeview.tcl', '/usr/share/tcltk/tk8.6/ttk/treeview.tcl', 'DATA'),
|
||||
('tk/ttk/spinbox.tcl', '/usr/share/tcltk/tk8.6/ttk/spinbox.tcl', 'DATA'),
|
||||
('tk/ttk/button.tcl', '/usr/share/tcltk/tk8.6/ttk/button.tcl', 'DATA'),
|
||||
('tk/ttk/panedwindow.tcl',
|
||||
'/usr/share/tcltk/tk8.6/ttk/panedwindow.tcl',
|
||||
'DATA'),
|
||||
('tk/ttk/ttk.tcl', '/usr/share/tcltk/tk8.6/ttk/ttk.tcl', 'DATA'),
|
||||
('tk/ttk/scale.tcl', '/usr/share/tcltk/tk8.6/ttk/scale.tcl', 'DATA'),
|
||||
('tk/ttk/scrollbar.tcl', '/usr/share/tcltk/tk8.6/ttk/scrollbar.tcl', 'DATA'),
|
||||
('tk/ttk/combobox.tcl', '/usr/share/tcltk/tk8.6/ttk/combobox.tcl', 'DATA')])
|
||||
@ -1,14 +0,0 @@
|
||||
missing module named 'org.python' - imported by pickle, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py, xml.sax
|
||||
excluded module named _frozen_importlib - imported by importlib, importlib.abc, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named _frozen_importlib_external - imported by importlib._bootstrap, importlib, importlib.abc, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named _winreg - imported by platform, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named _scproxy - imported by urllib.request
|
||||
missing module named java - imported by platform, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named 'java.lang' - imported by platform, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py, xml.sax._exceptions
|
||||
missing module named vms_lib - imported by platform, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named winreg - imported by platform, mimetypes, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py, urllib.request
|
||||
missing module named nt - imported by shutil, os, ntpath, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named msvcrt - imported by subprocess, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py, getpass
|
||||
missing module named _winapi - imported by subprocess, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named _dummy_threading - imported by dummy_threading, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
missing module named org - imported by copy, /root/Downloads/FLO-appStore-master/apps/FloRate/rating-client.py
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,399 +0,0 @@
|
||||
from tkinter import Tk,END,Button,Label,Frame,Entry,messagebox,Message,Text,NSEW,Scrollbar,Listbox,MULTIPLE ,PhotoImage,VERTICAL
|
||||
#import CryptTools
|
||||
import Transaction
|
||||
import DataCenter
|
||||
from SF import VerticalScrolledFrame
|
||||
|
||||
class Application:
|
||||
"""The main application GUI Window."""
|
||||
def __init__(self,master=None):
|
||||
|
||||
self.master = master
|
||||
self.Frame = Frame(self.master)
|
||||
self.LEVEL ={
|
||||
1: 'unsatisfactory',
|
||||
2: 'satisfactory',
|
||||
3: 'meet expectations',
|
||||
4: 'Exceed expectations',
|
||||
5: 'Exceptional'
|
||||
}
|
||||
|
||||
|
||||
def main(self):
|
||||
"""
|
||||
Method name: main.
|
||||
|
||||
Method use: The program starts the main GUI of the Rating System.
|
||||
"""
|
||||
try:
|
||||
self.IS.destroy()
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
self.EM.destroy()
|
||||
except:
|
||||
pass
|
||||
self.MF = Frame(self.master)
|
||||
self.MF.pack()
|
||||
WelcomeLabel = Label(self.MF,text="Choose who you are ?",font=("Arial", 20))
|
||||
WelcomeLabel.grid(column = 1, columnspan =2)
|
||||
label =Label(self.MF,text=" ")
|
||||
label.grid(row = 2, columnspan =2)
|
||||
ISButton = Button(self.MF,text="Intern",command=self.internWindow)
|
||||
ISButton.grid(row =3,column=1)
|
||||
EMButton = Button(self.MF,text="Employee",command=self.employeeWindow)
|
||||
EMButton.grid(row =3, column=2)
|
||||
contentText = "\n\nWhat is this?\nThis app lets us to rate Interns through the FLO blockchain .\n\nThis is a zero knowledge application.\n\nHow to work ?\n\n Choose if you are an Intern or Employeer\n\n"+"An Intern's work would be to enter the Transaction id in the given field and get rating\n\nAn Empolyee must enter the transaction address and write all the intern data to it "
|
||||
Context = Message(self.MF, text = contentText)
|
||||
Context.grid(column = 1, columnspan =2)
|
||||
|
||||
#Intern Section Starts
|
||||
def internWindow(self):
|
||||
"""
|
||||
Method Name: internWindow.
|
||||
|
||||
Method use: Provides a GUI for the Intern Application.
|
||||
"""
|
||||
|
||||
|
||||
self.MF.destroy()
|
||||
self.IS = Frame(self.master)
|
||||
self.IS.pack()
|
||||
self.tranLBL = Label(self.IS,text="Enter Trasaction id: ")
|
||||
self.tranLBL.grid(row=0,column=0,sticky=NSEW,padx=8,pady=8)
|
||||
self.TXE = Entry(self.IS)
|
||||
self.TXE.grid(row=0,column=1,sticky=NSEW,padx=16,pady=8)
|
||||
self.Sub = Button(self.IS,text="Fetch Rating",command=self.ratingResults)
|
||||
self.Sub.grid(row=1,columnspan=2,pady=16,padx=16,sticky=NSEW)
|
||||
self.LBL = Label(self.IS,text="Make a search and results will be displayed here:")
|
||||
self.LBL.grid(row=2,columnspan=2)
|
||||
self.Text = Text(self.IS,height=30,width=40,state='disabled')
|
||||
self.TextScroll = Scrollbar(self.Text,orient=VERTICAL)
|
||||
self.Text.config(yscrollcommand=self.TextScroll.set)
|
||||
self.TextScroll.config(command=self.Text.yview)
|
||||
self.Text.grid(row=3,columnspan=2,padx=16,pady=16)
|
||||
self.BackButton = Button(self.IS,text="Back",command=self.main)
|
||||
self.BackButton.grid(row=4,column=0)
|
||||
self.QUIT = Button(self.IS,command=self.master.destroy,text="QUIT")
|
||||
self.QUIT.grid(row=4,column=1)
|
||||
|
||||
|
||||
def ratingResults(self):
|
||||
"""
|
||||
Method name: ratingResults.
|
||||
|
||||
Method use: Driver for Intern Window GUI.
|
||||
"""
|
||||
|
||||
|
||||
self.txid = self.TXE.get()
|
||||
self.TXE.configure(state="normal")
|
||||
self.TXE.insert('end',"Attempting to connect to BlockChain Address")
|
||||
self.TXE.configure(state="disabled")
|
||||
self.Text.configure(state="normal")
|
||||
self.Text.insert('end',"Trying to read Data from Block Chain")
|
||||
self.Text.configure(state="disabled")
|
||||
try:
|
||||
if len(self.txid)==0:
|
||||
messagebox.showwarning('Txid Error',"Trasaction Id cannot be empty")
|
||||
self.TXE.configure(state='normal')
|
||||
self.TXE.delete(0,'end')
|
||||
self.Text.configure(state='normal')
|
||||
self.Text.delete(1.0,'end')
|
||||
self.Text.configure(state='disabled')
|
||||
return
|
||||
recv = Transaction.readDatafromBlockchain(self.txid)
|
||||
except:
|
||||
messagebox.showwarning("NetworkError","Make Sure FLO-Core is running")
|
||||
self.TXE.configure(state='normal')
|
||||
self.TXE.delete(0,'end')
|
||||
self.Text.configure(state='normal')
|
||||
self.Text.delete(1.0,'end')
|
||||
self.Text.configure(state='disabled')
|
||||
pt = bytes.fromhex(recv).decode()
|
||||
lines = pt.split('\n')
|
||||
self.Text.configure(state="normal")
|
||||
self.Text.delete(1.0,'end')
|
||||
for line in lines:
|
||||
if line:
|
||||
num = line.split()[1]
|
||||
num = int(float(num))+1
|
||||
self.Text.insert('1.0',line+" "+self.LEVEL[num]+"\n")
|
||||
self.Text.configure(state='disabled')
|
||||
|
||||
#Intern Section Ends Here
|
||||
|
||||
#Employee Section Starts Here
|
||||
|
||||
def employeeWindow(self,text=None):
|
||||
"""
|
||||
Method name: employeeWindow.
|
||||
|
||||
Method use: Provide a GUI for employee Window.
|
||||
|
||||
Positional Arguments:
|
||||
|
||||
Arguement Name: text.
|
||||
Argument Use: To provide the neccessary details to the GUI about rating data
|
||||
retrieved from the finalizeRatings method.
|
||||
"""
|
||||
|
||||
try:
|
||||
self.MF.destroy()
|
||||
self.RW.destroy()
|
||||
except:
|
||||
pass
|
||||
self.EM = Frame(self.master)
|
||||
self.EM.pack()
|
||||
self.IDLBL = Label(self.EM,text="Enter the Adress: ")
|
||||
self.IDLBL.grid(row=0,column=0,sticky=NSEW,padx=8,pady=8)
|
||||
self.TRE = Entry(self.EM)
|
||||
self.TRE.grid(row=0,column=1,sticky=NSEW,padx=16,pady=8)
|
||||
self.pButton = Button(self.EM,text="Create New Ratings",command=self.createRatings)
|
||||
self.pButton.grid(row=2,column=0,pady=16,padx=16)
|
||||
self.Sub = Button(self.EM,text="Post Rating",command=self.postResults)
|
||||
self.Sub.grid(row=2,column=1,pady=16,padx=16,sticky=NSEW)
|
||||
self.LBL = Label(self.EM,text="The rating Data is Here:")
|
||||
self.LBL.grid(row=3,columnspan=2)
|
||||
self.Text = Text(self.EM,height=20,width=30)
|
||||
if text:
|
||||
self.Text.insert('1.0',text)
|
||||
self.Text.grid(row=4,columnspan=2,padx=16,pady=16)
|
||||
self.BackButton = Button(self.EM,text="Back",command=self.main)
|
||||
self.BackButton.grid(row=5,column=0)
|
||||
self.QUIT = Button(self.EM,command=self.master.destroy,text="QUIT")
|
||||
self.QUIT.grid(row=5,column=1)
|
||||
|
||||
|
||||
def createRatings(self):
|
||||
"""
|
||||
Method name: createRaNSEWtings.
|
||||
|
||||
Method use: Provides a GUI for the Intern Rating.
|
||||
"""
|
||||
try:
|
||||
self.EM.destroy()
|
||||
except:
|
||||
pass
|
||||
DataCenter.checkState()
|
||||
self.RW = Frame(self.master)
|
||||
self.RW.pack()
|
||||
self.IDLB = Listbox(self.RW,width=50,height=20,selectmode=MULTIPLE)
|
||||
self.scrollbar = Scrollbar(self.IDLB, orient=VERTICAL)
|
||||
self.IDLB.config(yscrollcommand=self.scrollbar.set)
|
||||
self.scrollbar.config(command=self.IDLB.yview)
|
||||
self.populateListBox()
|
||||
self.IDLB.grid(row=0,column=1,padx=16,pady=16,sticky=NSEW)
|
||||
self.loadImg = PhotoImage(file="AddBtn.gif")
|
||||
self.remImg = PhotoImage(file="RenmBtn.gif")
|
||||
self.removeIntern = Button(self.RW,height=48,width=48,image=self.remImg,command=self.removeData)
|
||||
self.removeIntern.grid(row=0,column=2,padx=8,pady=8)
|
||||
self.addIntern = Button(self.RW,text="",height=48,width=48,image=self.loadImg,command = self.loadData)
|
||||
self.addIntern.grid(row=0,column=3,padx=8,pady=8)
|
||||
self.RL = Listbox(self.RW,width=50,height=20,selectmode=MULTIPLE)
|
||||
for usr,rat in DataCenter.retrieveRating():
|
||||
self.RL.insert(END,usr + " "+str(rat))
|
||||
try:
|
||||
self.RAT.destroy()
|
||||
except:
|
||||
pass
|
||||
self.RLscroll = Scrollbar(self.RL, orient=VERTICAL)
|
||||
self.RL.config(yscrollcommand=self.RLscroll.set)
|
||||
self.RLscroll.config(command=self.RL.yview)
|
||||
self.RL.grid(row=0,column=4,padx=16,pady=16)
|
||||
self.createIntern = Button(self.RW,text="Add a new Intern",command = self.newIntern)
|
||||
self.createIntern.grid(row=2,column=1,padx=8,pady=4)
|
||||
self.DeleteIntern = Button(self.RW,text="Remove an Existing Intern",command=self.removeExistingIntern)
|
||||
self.DeleteIntern.grid(row=3,column=1,padx=8,pady=4)
|
||||
self.finalBtn = Button(self.RW,text="Finalize",command = self.finalizeRatings)
|
||||
self.finalBtn.grid(row=3,column=4)
|
||||
|
||||
|
||||
def newIntern(self):
|
||||
"""
|
||||
Method name: newIntern.
|
||||
|
||||
Method use: GUI for the creation of new Intern
|
||||
"""
|
||||
|
||||
|
||||
self.RW.destroy()
|
||||
self.NE = Frame(self.master)
|
||||
self.NE.pack()
|
||||
self.newLBL = Label(self.NE,text="Enter the name: ")
|
||||
self.newLBL.grid(row=0,column=0,padx=8,pady=8)
|
||||
self.newNMEntry = Entry(self.NE)
|
||||
self.newNMEntry.grid(row=0,column=1,padx=8,pady=8)
|
||||
self.newUser = Label(self.NE,text="Enter the username: ")
|
||||
self.newUser.grid(row=1,column=0,padx=8,pady=8)
|
||||
self.newUNMEntry = Entry(self.NE)
|
||||
self.newUNMEntry.grid(row=1,column=1,padx=8,pady=8)
|
||||
self.AddBtn = Button(self.NE,text="Add Intern",command = self.CIB)
|
||||
self.AddBtn.grid(row=2,padx=8,pady=8)
|
||||
|
||||
|
||||
def finalizeRatings(self):
|
||||
"""
|
||||
Method Name: finalizeRatings.
|
||||
|
||||
Method Use: Format the rating data into desirable format and return back to the
|
||||
Employee Window.
|
||||
"""
|
||||
|
||||
Rating_Str = ""
|
||||
for usr,rat in DataCenter.retrieveRating():
|
||||
Rating_Str += usr+" "+str(rat)+"\n"
|
||||
|
||||
if not messagebox.askyesno("Revive Data","Should you want the rating data to be kept"):
|
||||
DataCenter.clearRatings()
|
||||
self.RW.destroy()
|
||||
self.employeeWindow(text = Rating_Str)
|
||||
|
||||
|
||||
def CIB(self):
|
||||
"""
|
||||
Method name: CIB.
|
||||
|
||||
Method Use: Driver Code to add a new Intern to the DataBase.
|
||||
"""
|
||||
if len(self.newNMEntry.get())<=3 or len(self.newUNMEntry.get())<=3:
|
||||
messagebox.showwarning("Invalid Length","The Intern Fields are either empty or under 3 charecters")
|
||||
return
|
||||
else:
|
||||
try:
|
||||
DataCenter.write(self.newNMEntry.get(),self.newUNMEntry.get())
|
||||
except:
|
||||
messagebox.showwarning("Invalid Data","Please Check again")
|
||||
return
|
||||
messagebox.showinfo("Success","New Intern Sucessfully added")
|
||||
self.NE.destroy()
|
||||
self.createRatings()
|
||||
|
||||
|
||||
def loadData(self,process=None):
|
||||
"""
|
||||
Method name: loadData.
|
||||
|
||||
Method use: GUI to take the Input from the user and load the data to the Rating Data Base.
|
||||
"""
|
||||
|
||||
|
||||
self.ratList = []
|
||||
self.TMPEN=[]
|
||||
if process:
|
||||
for name,rating in process:
|
||||
DataCenter.insertRating(name,rating.get())
|
||||
self.createRatings()
|
||||
return
|
||||
if not self.IDLB.curselection():
|
||||
messagebox.showinfo("Empty Selection","Please make sure to select at least one intern")
|
||||
return
|
||||
for i in self.IDLB.curselection():
|
||||
self.ratList.append(self.IDLB.get(i).split(' ')[2])
|
||||
self.RW.destroy()
|
||||
self.RAT = VerticalScrolledFrame(self.master)
|
||||
self.RAT.pack()
|
||||
self.LBL = Label(self.RAT.interior,text="Enter a Rating for the selected interns: ")
|
||||
self.LBL.pack()
|
||||
for item,row in zip(self.ratList,range(1,len(self.ratList)+1)):
|
||||
self.LBx = Label(self.RAT.interior,text=item)
|
||||
self.LBx.pack()
|
||||
self.TMPEN.append(Entry(self.RAT.interior))
|
||||
self.TMPEN[row-1].pack()
|
||||
self.Sub = Button(self.RAT.interior,command=lambda :self.loadData(zip(self.ratList,self.TMPEN)),text="submit")
|
||||
self.Sub.pack(pady=8)
|
||||
|
||||
|
||||
def removeData(self):
|
||||
"""
|
||||
Method Name: removeData.
|
||||
|
||||
Method use: Driver code to remove an Intern's Rating from the DataBase.
|
||||
"""
|
||||
|
||||
delList = []
|
||||
for item in self.RL.curselection():
|
||||
delList.append(self.RL.get(item))
|
||||
self.RL.delete(item)
|
||||
for item in delList:
|
||||
DataCenter.removeRating(item.split(' ')[0])
|
||||
|
||||
|
||||
def populateListBox(self):
|
||||
"""
|
||||
Method Name: populateListBox
|
||||
|
||||
Method use: To Format the rating Data and Fill it into the Intern's List
|
||||
"""
|
||||
|
||||
try:
|
||||
for data in enumerate(DataCenter.readAll(),1):
|
||||
self.IDLB.insert(END,str(data[0])+" "+str(data[1][0])+" "+str(data[1][1]))
|
||||
except:
|
||||
return
|
||||
|
||||
def removeExistingIntern(self):
|
||||
"""
|
||||
Method Name: removeExistingIntern
|
||||
|
||||
Method use: To remove an Existing Intern from the DataBase
|
||||
"""
|
||||
|
||||
delList = []
|
||||
for i in self.IDLB.curselection():
|
||||
delList.append(self.IDLB.get(i))
|
||||
if messagebox.askyesno("Are you sure to delete ? (This can't be undone)","The following interns data is deleted:\n\n"+"\n".join(delList)):
|
||||
for item in delList:
|
||||
DataCenter.delete(item.split(' ')[2])
|
||||
self.RW.destroy()
|
||||
self.createRatings()
|
||||
|
||||
|
||||
def postResults(self):
|
||||
"""
|
||||
Method Name: postResults
|
||||
|
||||
Method use: To post the results on to the Block Chain
|
||||
"""
|
||||
|
||||
self.addr = self.TRE.get()
|
||||
self.ratingData = self.Text.get('1.0', END)
|
||||
try:
|
||||
if len(self.addr)==0:
|
||||
messagebox.showwarning('Adress Error',"Trasaction Address cannot be empty")
|
||||
self.TRE.configure(state='normal')
|
||||
self.TRE.delete(0,'end')
|
||||
self.Text.delete(1.0,'end')
|
||||
return
|
||||
elif len(self.ratingData)==0:
|
||||
messagebox.showwarning('Empty Ratings Error',"Ratings Field cannot be empty")
|
||||
hexCoded = self.ratingData.encode()
|
||||
hexCoded = hexCoded.hex()
|
||||
send = Transaction.writeDatatoBlockchain(hexCoded,self.addr,0.003)
|
||||
print(send)
|
||||
messagebox.showinfo("Transaction Success","Share this id with your interns:\n"+send)
|
||||
f = open("RatingData.txt","w")
|
||||
f.write(send)
|
||||
f.close()
|
||||
except:
|
||||
messagebox.showwarning("NetworkError","Make Sure FLO-Core is running")
|
||||
self.TRE.configure(state='normal')
|
||||
self.TRE.delete(0,'end')
|
||||
self.Text.delete(1.0,'end')
|
||||
|
||||
|
||||
root = Tk()
|
||||
root.title("Flo Rating App")
|
||||
app = Application(master=root)
|
||||
app.main()
|
||||
root.mainloop()
|
||||
|
||||
""""
|
||||
key = CryptTools.keyGen()
|
||||
ct = CryptTools.encryptMsg("HelloTarun",key)
|
||||
send = ct.encode().hex()
|
||||
#txid = Transaction.writeDatatoBlockchain(send,"oPXCQNVnzkLRgHqzhz6kWc8XyErSdVhAdn",0.0003)
|
||||
#recv = Transaction.readDatafromBlockchain(txid)
|
||||
ct = bytes.fromhex(recv).decode()
|
||||
pt = CryptTools.decryptMsg(ct,key)
|
||||
"""
|
||||
@ -1,29 +0,0 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(['rating-client.py'],
|
||||
pathex=['/root/Downloads/FLO-appStore-master/apps/FloRate'],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
name='rating-client',
|
||||
debug=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
runtime_tmpdir=None,
|
||||
console=True )
|
||||
2
apps/Readme.md
Normal file
2
apps/Readme.md
Normal file
@ -0,0 +1,2 @@
|
||||
This is util Folder for downloading the app.
|
||||
Do not delete this folder
|
||||
@ -1,23 +0,0 @@
|
||||
# Xcertify
|
||||
Xcertify is decentralized application built on floblockchain, which can be used to publish certificates, college degrees, results, and even contact cards. Xcertify makes sure that fake documents cannot be created as they are written over blockchain and verified using digital signatures.
|
||||
Currently only CLI version is available , with just the basic certificate templates. I will be releasing the GUI version and 3 more templates in a week or so. Although it already supports user created themes.
|
||||
|
||||
|
||||
You need to run a full flo-qt wallet to run it. Download it from here https://github.com/floblockchain/flo
|
||||
|
||||
|
||||
How to use Xcertify?
|
||||
|
||||
-> Download it from github
|
||||
|
||||
-> Install htmlmin and webbrowser modules using pip
|
||||
|
||||
pip install htmlmin
|
||||
|
||||
pip install webbrowser
|
||||
|
||||
-> You can edit the Xcertify/HTML/index.html according to your need. The attributes should be enclosed within {{ }} . e.g. {{student_name}}
|
||||
|
||||
->Run publish.py. It will automatically detect the attributes and ask you to enter the values.
|
||||
|
||||
->if you want to view a document run the view.py file and enter the certificate id and source's address to verify the document. If verification is successful then a browser window with the document should appear.
|
||||
Binary file not shown.
Binary file not shown.
@ -1,246 +0,0 @@
|
||||
(['/root/Desktop/Xcertify-master/publish.py'],
|
||||
['/root/Desktop/Xcertify-master', '/root/Desktop/Xcertify-master'],
|
||||
['codecs'],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
False,
|
||||
False,
|
||||
'3.6.6 (default, Jun 27 2018, 14:44:17) \n[GCC 8.1.0]',
|
||||
[('publish', '/root/Desktop/Xcertify-master/publish.py', 'PYSOURCE')],
|
||||
[('_strptime', '/usr/lib/python3.6/_strptime.py', 'PYMODULE'),
|
||||
('datetime', '/usr/lib/python3.6/datetime.py', 'PYMODULE'),
|
||||
('posixpath', '/usr/lib/python3.6/posixpath.py', 'PYMODULE'),
|
||||
('stringprep', '/usr/lib/python3.6/stringprep.py', 'PYMODULE'),
|
||||
('__future__', '/usr/lib/python3.6/__future__.py', 'PYMODULE'),
|
||||
('argparse', '/usr/lib/python3.6/argparse.py', 'PYMODULE'),
|
||||
('difflib', '/usr/lib/python3.6/difflib.py', 'PYMODULE'),
|
||||
('ast', '/usr/lib/python3.6/ast.py', 'PYMODULE'),
|
||||
('inspect', '/usr/lib/python3.6/inspect.py', 'PYMODULE'),
|
||||
('genericpath', '/usr/lib/python3.6/genericpath.py', 'PYMODULE'),
|
||||
('ntpath', '/usr/lib/python3.6/ntpath.py', 'PYMODULE'),
|
||||
('os', '/usr/lib/python3.6/os.py', 'PYMODULE'),
|
||||
('cmd', '/usr/lib/python3.6/cmd.py', 'PYMODULE'),
|
||||
('bdb', '/usr/lib/python3.6/bdb.py', 'PYMODULE'),
|
||||
('opcode', '/usr/lib/python3.6/opcode.py', 'PYMODULE'),
|
||||
('dis', '/usr/lib/python3.6/dis.py', 'PYMODULE'),
|
||||
('codeop', '/usr/lib/python3.6/codeop.py', 'PYMODULE'),
|
||||
('code', '/usr/lib/python3.6/code.py', 'PYMODULE'),
|
||||
('glob', '/usr/lib/python3.6/glob.py', 'PYMODULE'),
|
||||
('shlex', '/usr/lib/python3.6/shlex.py', 'PYMODULE'),
|
||||
('importlib._bootstrap',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap.py',
|
||||
'PYMODULE'),
|
||||
('importlib._bootstrap_external',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap_external.py',
|
||||
'PYMODULE'),
|
||||
('importlib.machinery',
|
||||
'/usr/lib/python3.6/importlib/machinery.py',
|
||||
'PYMODULE'),
|
||||
('importlib.util', '/usr/lib/python3.6/importlib/util.py', 'PYMODULE'),
|
||||
('importlib.abc', '/usr/lib/python3.6/importlib/abc.py', 'PYMODULE'),
|
||||
('importlib', '/usr/lib/python3.6/importlib/__init__.py', 'PYMODULE'),
|
||||
('pkgutil', '/usr/lib/python3.6/pkgutil.py', 'PYMODULE'),
|
||||
('xml', '/usr/lib/python3.6/xml/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.expatreader',
|
||||
'/usr/lib/python3.6/xml/sax/expatreader.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.saxutils', '/usr/lib/python3.6/xml/sax/saxutils.py', 'PYMODULE'),
|
||||
('urllib.request', '/usr/lib/python3.6/urllib/request.py', 'PYMODULE'),
|
||||
('getpass', '/usr/lib/python3.6/getpass.py', 'PYMODULE'),
|
||||
('nturl2path', '/usr/lib/python3.6/nturl2path.py', 'PYMODULE'),
|
||||
('ftplib', '/usr/lib/python3.6/ftplib.py', 'PYMODULE'),
|
||||
('netrc', '/usr/lib/python3.6/netrc.py', 'PYMODULE'),
|
||||
('http.cookiejar', '/usr/lib/python3.6/http/cookiejar.py', 'PYMODULE'),
|
||||
('urllib.response', '/usr/lib/python3.6/urllib/response.py', 'PYMODULE'),
|
||||
('urllib.error', '/usr/lib/python3.6/urllib/error.py', 'PYMODULE'),
|
||||
('xml.sax', '/usr/lib/python3.6/xml/sax/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.handler', '/usr/lib/python3.6/xml/sax/handler.py', 'PYMODULE'),
|
||||
('xml.sax._exceptions',
|
||||
'/usr/lib/python3.6/xml/sax/_exceptions.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.xmlreader', '/usr/lib/python3.6/xml/sax/xmlreader.py', 'PYMODULE'),
|
||||
('xml.parsers', '/usr/lib/python3.6/xml/parsers/__init__.py', 'PYMODULE'),
|
||||
('xml.parsers.expat', '/usr/lib/python3.6/xml/parsers/expat.py', 'PYMODULE'),
|
||||
('plistlib', '/usr/lib/python3.6/plistlib.py', 'PYMODULE'),
|
||||
('platform', '/usr/lib/python3.6/platform.py', 'PYMODULE'),
|
||||
('token', '/usr/lib/python3.6/token.py', 'PYMODULE'),
|
||||
('tokenize', '/usr/lib/python3.6/tokenize.py', 'PYMODULE'),
|
||||
('urllib.parse', '/usr/lib/python3.6/urllib/parse.py', 'PYMODULE'),
|
||||
('tempfile', '/usr/lib/python3.6/tempfile.py', 'PYMODULE'),
|
||||
('tty', '/usr/lib/python3.6/tty.py', 'PYMODULE'),
|
||||
('pydoc_data', '/usr/lib/python3.6/pydoc_data/__init__.py', 'PYMODULE'),
|
||||
('pydoc_data.topics', '/usr/lib/python3.6/pydoc_data/topics.py', 'PYMODULE'),
|
||||
('textwrap', '/usr/lib/python3.6/textwrap.py', 'PYMODULE'),
|
||||
('html.entities', '/usr/lib/python3.6/html/entities.py', 'PYMODULE'),
|
||||
('html', '/usr/lib/python3.6/html/__init__.py', 'PYMODULE'),
|
||||
('ipaddress', '/usr/lib/python3.6/ipaddress.py', 'PYMODULE'),
|
||||
('ssl', '/usr/lib/python3.6/ssl.py', 'PYMODULE'),
|
||||
('http.client', '/usr/lib/python3.6/http/client.py', 'PYMODULE'),
|
||||
('mimetypes', '/usr/lib/python3.6/mimetypes.py', 'PYMODULE'),
|
||||
('socketserver', '/usr/lib/python3.6/socketserver.py', 'PYMODULE'),
|
||||
('http', '/usr/lib/python3.6/http/__init__.py', 'PYMODULE'),
|
||||
('http.server', '/usr/lib/python3.6/http/server.py', 'PYMODULE'),
|
||||
('optparse', '/usr/lib/python3.6/optparse.py', 'PYMODULE'),
|
||||
('uu', '/usr/lib/python3.6/uu.py', 'PYMODULE'),
|
||||
('quopri', '/usr/lib/python3.6/quopri.py', 'PYMODULE'),
|
||||
('email.feedparser', '/usr/lib/python3.6/email/feedparser.py', 'PYMODULE'),
|
||||
('email.parser', '/usr/lib/python3.6/email/parser.py', 'PYMODULE'),
|
||||
('email', '/usr/lib/python3.6/email/__init__.py', 'PYMODULE'),
|
||||
('calendar', '/usr/lib/python3.6/calendar.py', 'PYMODULE'),
|
||||
('email._parseaddr', '/usr/lib/python3.6/email/_parseaddr.py', 'PYMODULE'),
|
||||
('email.utils', '/usr/lib/python3.6/email/utils.py', 'PYMODULE'),
|
||||
('email.errors', '/usr/lib/python3.6/email/errors.py', 'PYMODULE'),
|
||||
('email.header', '/usr/lib/python3.6/email/header.py', 'PYMODULE'),
|
||||
('email._policybase', '/usr/lib/python3.6/email/_policybase.py', 'PYMODULE'),
|
||||
('email.base64mime', '/usr/lib/python3.6/email/base64mime.py', 'PYMODULE'),
|
||||
('email.encoders', '/usr/lib/python3.6/email/encoders.py', 'PYMODULE'),
|
||||
('email.charset', '/usr/lib/python3.6/email/charset.py', 'PYMODULE'),
|
||||
('base64', '/usr/lib/python3.6/base64.py', 'PYMODULE'),
|
||||
('email._encoded_words',
|
||||
'/usr/lib/python3.6/email/_encoded_words.py',
|
||||
'PYMODULE'),
|
||||
('hashlib', '/usr/lib/python3.6/hashlib.py', 'PYMODULE'),
|
||||
('bisect', '/usr/lib/python3.6/bisect.py', 'PYMODULE'),
|
||||
('random', '/usr/lib/python3.6/random.py', 'PYMODULE'),
|
||||
('email.generator', '/usr/lib/python3.6/email/generator.py', 'PYMODULE'),
|
||||
('email.iterators', '/usr/lib/python3.6/email/iterators.py', 'PYMODULE'),
|
||||
('urllib', '/usr/lib/python3.6/urllib/__init__.py', 'PYMODULE'),
|
||||
('email._header_value_parser',
|
||||
'/usr/lib/python3.6/email/_header_value_parser.py',
|
||||
'PYMODULE'),
|
||||
('email.headerregistry',
|
||||
'/usr/lib/python3.6/email/headerregistry.py',
|
||||
'PYMODULE'),
|
||||
('email.quoprimime', '/usr/lib/python3.6/email/quoprimime.py', 'PYMODULE'),
|
||||
('email.contentmanager',
|
||||
'/usr/lib/python3.6/email/contentmanager.py',
|
||||
'PYMODULE'),
|
||||
('email.policy', '/usr/lib/python3.6/email/policy.py', 'PYMODULE'),
|
||||
('email.message', '/usr/lib/python3.6/email/message.py', 'PYMODULE'),
|
||||
('stat', '/usr/lib/python3.6/stat.py', 'PYMODULE'),
|
||||
('bz2', '/usr/lib/python3.6/bz2.py', 'PYMODULE'),
|
||||
('lzma', '/usr/lib/python3.6/lzma.py', 'PYMODULE'),
|
||||
('_compression', '/usr/lib/python3.6/_compression.py', 'PYMODULE'),
|
||||
('gzip', '/usr/lib/python3.6/gzip.py', 'PYMODULE'),
|
||||
('tarfile', '/usr/lib/python3.6/tarfile.py', 'PYMODULE'),
|
||||
('_dummy_thread', '/usr/lib/python3.6/_dummy_thread.py', 'PYMODULE'),
|
||||
('dummy_threading', '/usr/lib/python3.6/dummy_threading.py', 'PYMODULE'),
|
||||
('py_compile', '/usr/lib/python3.6/py_compile.py', 'PYMODULE'),
|
||||
('zipfile', '/usr/lib/python3.6/zipfile.py', 'PYMODULE'),
|
||||
('shutil', '/usr/lib/python3.6/shutil.py', 'PYMODULE'),
|
||||
('selectors', '/usr/lib/python3.6/selectors.py', 'PYMODULE'),
|
||||
('socket', '/usr/lib/python3.6/socket.py', 'PYMODULE'),
|
||||
('webbrowser', '/usr/lib/python3.6/webbrowser.py', 'PYMODULE'),
|
||||
('pydoc', '/usr/lib/python3.6/pydoc.py', 'PYMODULE'),
|
||||
('copy', '/usr/lib/python3.6/copy.py', 'PYMODULE'),
|
||||
('gettext', '/usr/lib/python3.6/gettext.py', 'PYMODULE'),
|
||||
('getopt', '/usr/lib/python3.6/getopt.py', 'PYMODULE'),
|
||||
('pdb', '/usr/lib/python3.6/pdb.py', 'PYMODULE'),
|
||||
('unittest.util', '/usr/lib/python3.6/unittest/util.py', 'PYMODULE'),
|
||||
('unittest.result', '/usr/lib/python3.6/unittest/result.py', 'PYMODULE'),
|
||||
('string', '/usr/lib/python3.6/string.py', 'PYMODULE'),
|
||||
('_threading_local', '/usr/lib/python3.6/_threading_local.py', 'PYMODULE'),
|
||||
('threading', '/usr/lib/python3.6/threading.py', 'PYMODULE'),
|
||||
('logging', '/usr/lib/python3.6/logging/__init__.py', 'PYMODULE'),
|
||||
('contextlib', '/usr/lib/python3.6/contextlib.py', 'PYMODULE'),
|
||||
('unittest.case', '/usr/lib/python3.6/unittest/case.py', 'PYMODULE'),
|
||||
('unittest.suite', '/usr/lib/python3.6/unittest/suite.py', 'PYMODULE'),
|
||||
('unittest.loader', '/usr/lib/python3.6/unittest/loader.py', 'PYMODULE'),
|
||||
('fnmatch', '/usr/lib/python3.6/fnmatch.py', 'PYMODULE'),
|
||||
('struct', '/usr/lib/python3.6/struct.py', 'PYMODULE'),
|
||||
('_compat_pickle', '/usr/lib/python3.6/_compat_pickle.py', 'PYMODULE'),
|
||||
('pprint', '/usr/lib/python3.6/pprint.py', 'PYMODULE'),
|
||||
('pickle', '/usr/lib/python3.6/pickle.py', 'PYMODULE'),
|
||||
('tracemalloc', '/usr/lib/python3.6/tracemalloc.py', 'PYMODULE'),
|
||||
('warnings', '/usr/lib/python3.6/warnings.py', 'PYMODULE'),
|
||||
('unittest.runner', '/usr/lib/python3.6/unittest/runner.py', 'PYMODULE'),
|
||||
('unittest.main', '/usr/lib/python3.6/unittest/main.py', 'PYMODULE'),
|
||||
('enum', '/usr/lib/python3.6/enum.py', 'PYMODULE'),
|
||||
('signal', '/usr/lib/python3.6/signal.py', 'PYMODULE'),
|
||||
('unittest.signals', '/usr/lib/python3.6/unittest/signals.py', 'PYMODULE'),
|
||||
('unittest', '/usr/lib/python3.6/unittest/__init__.py', 'PYMODULE'),
|
||||
('doctest', '/usr/lib/python3.6/doctest.py', 'PYMODULE'),
|
||||
('htmlmin',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/__init__.py',
|
||||
'PYMODULE'),
|
||||
('htmlmin.main',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/main.py',
|
||||
'PYMODULE'),
|
||||
('cgi', '/usr/lib/python3.6/cgi.py', 'PYMODULE'),
|
||||
('htmlmin.parser',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/parser.py',
|
||||
'PYMODULE'),
|
||||
('htmlmin.python3html.parser',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/python3html/parser.py',
|
||||
'PYMODULE'),
|
||||
('htmlmin.python3html',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/python3html/__init__.py',
|
||||
'PYMODULE'),
|
||||
('_markupbase', '/usr/lib/python3.6/_markupbase.py', 'PYMODULE'),
|
||||
('htmlmin.escape',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/escape.py',
|
||||
'PYMODULE'),
|
||||
('subprocess', '/usr/lib/python3.6/subprocess.py', 'PYMODULE')],
|
||||
[('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||
('resource',
|
||||
'/usr/lib/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_ssl',
|
||||
'/usr/lib/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_tw',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_kr',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_cn',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_iso2022',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_hk',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_jp',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_multibytecodec',
|
||||
'/usr/lib/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_opcode',
|
||||
'/usr/lib/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('readline',
|
||||
'/usr/lib/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('termios',
|
||||
'/usr/lib/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_hashlib',
|
||||
'/usr/lib/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_bz2',
|
||||
'/usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_lzma',
|
||||
'/usr/lib/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('libcrypto.so.1.1', '/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1', 'BINARY'),
|
||||
('libssl.so.1.1', '/usr/lib/x86_64-linux-gnu/libssl.so.1.1', 'BINARY'),
|
||||
('libreadline.so.7', '/lib/x86_64-linux-gnu/libreadline.so.7', 'BINARY'),
|
||||
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||
('libpython3.6m.so.1.0',
|
||||
'/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0',
|
||||
'BINARY')],
|
||||
[],
|
||||
[],
|
||||
[('base_library.zip',
|
||||
'/root/Desktop/Xcertify-master/build/publish/base_library.zip',
|
||||
'DATA')],
|
||||
[])
|
||||
@ -1,94 +0,0 @@
|
||||
('/root/Desktop/Xcertify-master/dist/publish',
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
None,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
True,
|
||||
'publish.pkg',
|
||||
[('out00-PYZ.pyz',
|
||||
'/root/Desktop/Xcertify-master/build/publish/out00-PYZ.pyz',
|
||||
'PYZ'),
|
||||
('struct', '/usr/lib/python3.6/struct.pyo', 'PYMODULE'),
|
||||
('pyimod01_os_path',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod01_os_path.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod02_archive',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod02_archive.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod03_importers',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod03_importers.pyc',
|
||||
'PYMODULE'),
|
||||
('pyiboot01_bootstrap',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
|
||||
'PYSOURCE'),
|
||||
('publish', '/root/Desktop/Xcertify-master/publish.py', 'PYSOURCE'),
|
||||
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||
('resource',
|
||||
'/usr/lib/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_ssl',
|
||||
'/usr/lib/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_tw',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_kr',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_cn',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_iso2022',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_hk',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_jp',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_multibytecodec',
|
||||
'/usr/lib/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_opcode',
|
||||
'/usr/lib/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('readline',
|
||||
'/usr/lib/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('termios',
|
||||
'/usr/lib/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_hashlib',
|
||||
'/usr/lib/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_bz2',
|
||||
'/usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_lzma',
|
||||
'/usr/lib/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('libcrypto.so.1.1', '/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1', 'BINARY'),
|
||||
('libssl.so.1.1', '/usr/lib/x86_64-linux-gnu/libssl.so.1.1', 'BINARY'),
|
||||
('libreadline.so.7', '/lib/x86_64-linux-gnu/libreadline.so.7', 'BINARY'),
|
||||
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||
('libpython3.6m.so.1.0',
|
||||
'/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0',
|
||||
'BINARY'),
|
||||
('base_library.zip',
|
||||
'/root/Desktop/Xcertify-master/build/publish/base_library.zip',
|
||||
'DATA')],
|
||||
[],
|
||||
False,
|
||||
True,
|
||||
1533572235,
|
||||
[('run',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/bootloader/Linux-64bit/run',
|
||||
'EXECUTABLE')])
|
||||
Binary file not shown.
@ -1,87 +0,0 @@
|
||||
('/root/Desktop/Xcertify-master/build/publish/out00-PKG.pkg',
|
||||
{'BINARY': 1,
|
||||
'DATA': 1,
|
||||
'EXECUTABLE': 1,
|
||||
'EXTENSION': 1,
|
||||
'PYMODULE': 1,
|
||||
'PYSOURCE': 1,
|
||||
'PYZ': 0},
|
||||
[('out00-PYZ.pyz',
|
||||
'/root/Desktop/Xcertify-master/build/publish/out00-PYZ.pyz',
|
||||
'PYZ'),
|
||||
('struct', '/usr/lib/python3.6/struct.pyo', 'PYMODULE'),
|
||||
('pyimod01_os_path',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod01_os_path.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod02_archive',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod02_archive.pyc',
|
||||
'PYMODULE'),
|
||||
('pyimod03_importers',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyimod03_importers.pyc',
|
||||
'PYMODULE'),
|
||||
('pyiboot01_bootstrap',
|
||||
'/usr/local/lib/python3.6/dist-packages/PyInstaller/loader/pyiboot01_bootstrap.py',
|
||||
'PYSOURCE'),
|
||||
('publish', '/root/Desktop/Xcertify-master/publish.py', 'PYSOURCE'),
|
||||
('libexpat.so.1', '/lib/x86_64-linux-gnu/libexpat.so.1', 'BINARY'),
|
||||
('libz.so.1', '/lib/x86_64-linux-gnu/libz.so.1', 'BINARY'),
|
||||
('resource',
|
||||
'/usr/lib/python3.6/lib-dynload/resource.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_ssl',
|
||||
'/usr/lib/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_tw',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_tw.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_kr',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_kr.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_cn',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_cn.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_iso2022',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_iso2022.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_hk',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_hk.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_codecs_jp',
|
||||
'/usr/lib/python3.6/lib-dynload/_codecs_jp.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_multibytecodec',
|
||||
'/usr/lib/python3.6/lib-dynload/_multibytecodec.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_opcode',
|
||||
'/usr/lib/python3.6/lib-dynload/_opcode.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('readline',
|
||||
'/usr/lib/python3.6/lib-dynload/readline.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('termios',
|
||||
'/usr/lib/python3.6/lib-dynload/termios.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_hashlib',
|
||||
'/usr/lib/python3.6/lib-dynload/_hashlib.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_bz2',
|
||||
'/usr/lib/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('_lzma',
|
||||
'/usr/lib/python3.6/lib-dynload/_lzma.cpython-36m-x86_64-linux-gnu.so',
|
||||
'EXTENSION'),
|
||||
('libcrypto.so.1.1', '/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1', 'BINARY'),
|
||||
('libssl.so.1.1', '/usr/lib/x86_64-linux-gnu/libssl.so.1.1', 'BINARY'),
|
||||
('libreadline.so.7', '/lib/x86_64-linux-gnu/libreadline.so.7', 'BINARY'),
|
||||
('libtinfo.so.6', '/lib/x86_64-linux-gnu/libtinfo.so.6', 'BINARY'),
|
||||
('libbz2.so.1.0', '/lib/x86_64-linux-gnu/libbz2.so.1.0', 'BINARY'),
|
||||
('liblzma.so.5', '/lib/x86_64-linux-gnu/liblzma.so.5', 'BINARY'),
|
||||
('libpython3.6m.so.1.0',
|
||||
'/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0',
|
||||
'BINARY'),
|
||||
('base_library.zip',
|
||||
'/root/Desktop/Xcertify-master/build/publish/base_library.zip',
|
||||
'DATA')],
|
||||
False,
|
||||
False,
|
||||
True)
|
||||
Binary file not shown.
@ -1,175 +0,0 @@
|
||||
('/root/Desktop/Xcertify-master/build/publish/out00-PYZ.pyz',
|
||||
[('_strptime', '/usr/lib/python3.6/_strptime.py', 'PYMODULE'),
|
||||
('datetime', '/usr/lib/python3.6/datetime.py', 'PYMODULE'),
|
||||
('posixpath', '/usr/lib/python3.6/posixpath.py', 'PYMODULE'),
|
||||
('stringprep', '/usr/lib/python3.6/stringprep.py', 'PYMODULE'),
|
||||
('__future__', '/usr/lib/python3.6/__future__.py', 'PYMODULE'),
|
||||
('argparse', '/usr/lib/python3.6/argparse.py', 'PYMODULE'),
|
||||
('difflib', '/usr/lib/python3.6/difflib.py', 'PYMODULE'),
|
||||
('ast', '/usr/lib/python3.6/ast.py', 'PYMODULE'),
|
||||
('inspect', '/usr/lib/python3.6/inspect.py', 'PYMODULE'),
|
||||
('genericpath', '/usr/lib/python3.6/genericpath.py', 'PYMODULE'),
|
||||
('ntpath', '/usr/lib/python3.6/ntpath.py', 'PYMODULE'),
|
||||
('os', '/usr/lib/python3.6/os.py', 'PYMODULE'),
|
||||
('cmd', '/usr/lib/python3.6/cmd.py', 'PYMODULE'),
|
||||
('bdb', '/usr/lib/python3.6/bdb.py', 'PYMODULE'),
|
||||
('opcode', '/usr/lib/python3.6/opcode.py', 'PYMODULE'),
|
||||
('dis', '/usr/lib/python3.6/dis.py', 'PYMODULE'),
|
||||
('codeop', '/usr/lib/python3.6/codeop.py', 'PYMODULE'),
|
||||
('code', '/usr/lib/python3.6/code.py', 'PYMODULE'),
|
||||
('glob', '/usr/lib/python3.6/glob.py', 'PYMODULE'),
|
||||
('shlex', '/usr/lib/python3.6/shlex.py', 'PYMODULE'),
|
||||
('importlib._bootstrap',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap.py',
|
||||
'PYMODULE'),
|
||||
('importlib._bootstrap_external',
|
||||
'/usr/lib/python3.6/importlib/_bootstrap_external.py',
|
||||
'PYMODULE'),
|
||||
('importlib.machinery',
|
||||
'/usr/lib/python3.6/importlib/machinery.py',
|
||||
'PYMODULE'),
|
||||
('importlib.util', '/usr/lib/python3.6/importlib/util.py', 'PYMODULE'),
|
||||
('importlib.abc', '/usr/lib/python3.6/importlib/abc.py', 'PYMODULE'),
|
||||
('importlib', '/usr/lib/python3.6/importlib/__init__.py', 'PYMODULE'),
|
||||
('pkgutil', '/usr/lib/python3.6/pkgutil.py', 'PYMODULE'),
|
||||
('xml', '/usr/lib/python3.6/xml/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.expatreader',
|
||||
'/usr/lib/python3.6/xml/sax/expatreader.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.saxutils', '/usr/lib/python3.6/xml/sax/saxutils.py', 'PYMODULE'),
|
||||
('urllib.request', '/usr/lib/python3.6/urllib/request.py', 'PYMODULE'),
|
||||
('getpass', '/usr/lib/python3.6/getpass.py', 'PYMODULE'),
|
||||
('nturl2path', '/usr/lib/python3.6/nturl2path.py', 'PYMODULE'),
|
||||
('ftplib', '/usr/lib/python3.6/ftplib.py', 'PYMODULE'),
|
||||
('netrc', '/usr/lib/python3.6/netrc.py', 'PYMODULE'),
|
||||
('http.cookiejar', '/usr/lib/python3.6/http/cookiejar.py', 'PYMODULE'),
|
||||
('urllib.response', '/usr/lib/python3.6/urllib/response.py', 'PYMODULE'),
|
||||
('urllib.error', '/usr/lib/python3.6/urllib/error.py', 'PYMODULE'),
|
||||
('xml.sax', '/usr/lib/python3.6/xml/sax/__init__.py', 'PYMODULE'),
|
||||
('xml.sax.handler', '/usr/lib/python3.6/xml/sax/handler.py', 'PYMODULE'),
|
||||
('xml.sax._exceptions',
|
||||
'/usr/lib/python3.6/xml/sax/_exceptions.py',
|
||||
'PYMODULE'),
|
||||
('xml.sax.xmlreader', '/usr/lib/python3.6/xml/sax/xmlreader.py', 'PYMODULE'),
|
||||
('xml.parsers', '/usr/lib/python3.6/xml/parsers/__init__.py', 'PYMODULE'),
|
||||
('xml.parsers.expat', '/usr/lib/python3.6/xml/parsers/expat.py', 'PYMODULE'),
|
||||
('plistlib', '/usr/lib/python3.6/plistlib.py', 'PYMODULE'),
|
||||
('platform', '/usr/lib/python3.6/platform.py', 'PYMODULE'),
|
||||
('token', '/usr/lib/python3.6/token.py', 'PYMODULE'),
|
||||
('tokenize', '/usr/lib/python3.6/tokenize.py', 'PYMODULE'),
|
||||
('urllib.parse', '/usr/lib/python3.6/urllib/parse.py', 'PYMODULE'),
|
||||
('tempfile', '/usr/lib/python3.6/tempfile.py', 'PYMODULE'),
|
||||
('tty', '/usr/lib/python3.6/tty.py', 'PYMODULE'),
|
||||
('pydoc_data', '/usr/lib/python3.6/pydoc_data/__init__.py', 'PYMODULE'),
|
||||
('pydoc_data.topics', '/usr/lib/python3.6/pydoc_data/topics.py', 'PYMODULE'),
|
||||
('textwrap', '/usr/lib/python3.6/textwrap.py', 'PYMODULE'),
|
||||
('html.entities', '/usr/lib/python3.6/html/entities.py', 'PYMODULE'),
|
||||
('html', '/usr/lib/python3.6/html/__init__.py', 'PYMODULE'),
|
||||
('ipaddress', '/usr/lib/python3.6/ipaddress.py', 'PYMODULE'),
|
||||
('ssl', '/usr/lib/python3.6/ssl.py', 'PYMODULE'),
|
||||
('http.client', '/usr/lib/python3.6/http/client.py', 'PYMODULE'),
|
||||
('mimetypes', '/usr/lib/python3.6/mimetypes.py', 'PYMODULE'),
|
||||
('socketserver', '/usr/lib/python3.6/socketserver.py', 'PYMODULE'),
|
||||
('http', '/usr/lib/python3.6/http/__init__.py', 'PYMODULE'),
|
||||
('http.server', '/usr/lib/python3.6/http/server.py', 'PYMODULE'),
|
||||
('optparse', '/usr/lib/python3.6/optparse.py', 'PYMODULE'),
|
||||
('uu', '/usr/lib/python3.6/uu.py', 'PYMODULE'),
|
||||
('quopri', '/usr/lib/python3.6/quopri.py', 'PYMODULE'),
|
||||
('email.feedparser', '/usr/lib/python3.6/email/feedparser.py', 'PYMODULE'),
|
||||
('email.parser', '/usr/lib/python3.6/email/parser.py', 'PYMODULE'),
|
||||
('email', '/usr/lib/python3.6/email/__init__.py', 'PYMODULE'),
|
||||
('calendar', '/usr/lib/python3.6/calendar.py', 'PYMODULE'),
|
||||
('email._parseaddr', '/usr/lib/python3.6/email/_parseaddr.py', 'PYMODULE'),
|
||||
('email.utils', '/usr/lib/python3.6/email/utils.py', 'PYMODULE'),
|
||||
('email.errors', '/usr/lib/python3.6/email/errors.py', 'PYMODULE'),
|
||||
('email.header', '/usr/lib/python3.6/email/header.py', 'PYMODULE'),
|
||||
('email._policybase', '/usr/lib/python3.6/email/_policybase.py', 'PYMODULE'),
|
||||
('email.base64mime', '/usr/lib/python3.6/email/base64mime.py', 'PYMODULE'),
|
||||
('email.encoders', '/usr/lib/python3.6/email/encoders.py', 'PYMODULE'),
|
||||
('email.charset', '/usr/lib/python3.6/email/charset.py', 'PYMODULE'),
|
||||
('base64', '/usr/lib/python3.6/base64.py', 'PYMODULE'),
|
||||
('email._encoded_words',
|
||||
'/usr/lib/python3.6/email/_encoded_words.py',
|
||||
'PYMODULE'),
|
||||
('hashlib', '/usr/lib/python3.6/hashlib.py', 'PYMODULE'),
|
||||
('bisect', '/usr/lib/python3.6/bisect.py', 'PYMODULE'),
|
||||
('random', '/usr/lib/python3.6/random.py', 'PYMODULE'),
|
||||
('email.generator', '/usr/lib/python3.6/email/generator.py', 'PYMODULE'),
|
||||
('email.iterators', '/usr/lib/python3.6/email/iterators.py', 'PYMODULE'),
|
||||
('urllib', '/usr/lib/python3.6/urllib/__init__.py', 'PYMODULE'),
|
||||
('email._header_value_parser',
|
||||
'/usr/lib/python3.6/email/_header_value_parser.py',
|
||||
'PYMODULE'),
|
||||
('email.headerregistry',
|
||||
'/usr/lib/python3.6/email/headerregistry.py',
|
||||
'PYMODULE'),
|
||||
('email.quoprimime', '/usr/lib/python3.6/email/quoprimime.py', 'PYMODULE'),
|
||||
('email.contentmanager',
|
||||
'/usr/lib/python3.6/email/contentmanager.py',
|
||||
'PYMODULE'),
|
||||
('email.policy', '/usr/lib/python3.6/email/policy.py', 'PYMODULE'),
|
||||
('email.message', '/usr/lib/python3.6/email/message.py', 'PYMODULE'),
|
||||
('stat', '/usr/lib/python3.6/stat.py', 'PYMODULE'),
|
||||
('bz2', '/usr/lib/python3.6/bz2.py', 'PYMODULE'),
|
||||
('lzma', '/usr/lib/python3.6/lzma.py', 'PYMODULE'),
|
||||
('_compression', '/usr/lib/python3.6/_compression.py', 'PYMODULE'),
|
||||
('gzip', '/usr/lib/python3.6/gzip.py', 'PYMODULE'),
|
||||
('tarfile', '/usr/lib/python3.6/tarfile.py', 'PYMODULE'),
|
||||
('_dummy_thread', '/usr/lib/python3.6/_dummy_thread.py', 'PYMODULE'),
|
||||
('dummy_threading', '/usr/lib/python3.6/dummy_threading.py', 'PYMODULE'),
|
||||
('py_compile', '/usr/lib/python3.6/py_compile.py', 'PYMODULE'),
|
||||
('zipfile', '/usr/lib/python3.6/zipfile.py', 'PYMODULE'),
|
||||
('shutil', '/usr/lib/python3.6/shutil.py', 'PYMODULE'),
|
||||
('selectors', '/usr/lib/python3.6/selectors.py', 'PYMODULE'),
|
||||
('socket', '/usr/lib/python3.6/socket.py', 'PYMODULE'),
|
||||
('webbrowser', '/usr/lib/python3.6/webbrowser.py', 'PYMODULE'),
|
||||
('pydoc', '/usr/lib/python3.6/pydoc.py', 'PYMODULE'),
|
||||
('copy', '/usr/lib/python3.6/copy.py', 'PYMODULE'),
|
||||
('gettext', '/usr/lib/python3.6/gettext.py', 'PYMODULE'),
|
||||
('getopt', '/usr/lib/python3.6/getopt.py', 'PYMODULE'),
|
||||
('pdb', '/usr/lib/python3.6/pdb.py', 'PYMODULE'),
|
||||
('unittest.util', '/usr/lib/python3.6/unittest/util.py', 'PYMODULE'),
|
||||
('unittest.result', '/usr/lib/python3.6/unittest/result.py', 'PYMODULE'),
|
||||
('string', '/usr/lib/python3.6/string.py', 'PYMODULE'),
|
||||
('_threading_local', '/usr/lib/python3.6/_threading_local.py', 'PYMODULE'),
|
||||
('threading', '/usr/lib/python3.6/threading.py', 'PYMODULE'),
|
||||
('logging', '/usr/lib/python3.6/logging/__init__.py', 'PYMODULE'),
|
||||
('contextlib', '/usr/lib/python3.6/contextlib.py', 'PYMODULE'),
|
||||
('unittest.case', '/usr/lib/python3.6/unittest/case.py', 'PYMODULE'),
|
||||
('unittest.suite', '/usr/lib/python3.6/unittest/suite.py', 'PYMODULE'),
|
||||
('unittest.loader', '/usr/lib/python3.6/unittest/loader.py', 'PYMODULE'),
|
||||
('fnmatch', '/usr/lib/python3.6/fnmatch.py', 'PYMODULE'),
|
||||
('struct', '/usr/lib/python3.6/struct.py', 'PYMODULE'),
|
||||
('_compat_pickle', '/usr/lib/python3.6/_compat_pickle.py', 'PYMODULE'),
|
||||
('pprint', '/usr/lib/python3.6/pprint.py', 'PYMODULE'),
|
||||
('pickle', '/usr/lib/python3.6/pickle.py', 'PYMODULE'),
|
||||
('tracemalloc', '/usr/lib/python3.6/tracemalloc.py', 'PYMODULE'),
|
||||
('warnings', '/usr/lib/python3.6/warnings.py', 'PYMODULE'),
|
||||
('unittest.runner', '/usr/lib/python3.6/unittest/runner.py', 'PYMODULE'),
|
||||
('unittest.main', '/usr/lib/python3.6/unittest/main.py', 'PYMODULE'),
|
||||
('enum', '/usr/lib/python3.6/enum.py', 'PYMODULE'),
|
||||
('signal', '/usr/lib/python3.6/signal.py', 'PYMODULE'),
|
||||
('unittest.signals', '/usr/lib/python3.6/unittest/signals.py', 'PYMODULE'),
|
||||
('unittest', '/usr/lib/python3.6/unittest/__init__.py', 'PYMODULE'),
|
||||
('doctest', '/usr/lib/python3.6/doctest.py', 'PYMODULE'),
|
||||
('htmlmin',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/__init__.py',
|
||||
'PYMODULE'),
|
||||
('htmlmin.main',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/main.py',
|
||||
'PYMODULE'),
|
||||
('cgi', '/usr/lib/python3.6/cgi.py', 'PYMODULE'),
|
||||
('htmlmin.parser',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/parser.py',
|
||||
'PYMODULE'),
|
||||
('htmlmin.python3html.parser',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/python3html/parser.py',
|
||||
'PYMODULE'),
|
||||
('htmlmin.python3html',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/python3html/__init__.py',
|
||||
'PYMODULE'),
|
||||
('_markupbase', '/usr/lib/python3.6/_markupbase.py', 'PYMODULE'),
|
||||
('htmlmin.escape',
|
||||
'/usr/local/lib/python3.6/dist-packages/htmlmin/escape.py',
|
||||
'PYMODULE'),
|
||||
('subprocess', '/usr/lib/python3.6/subprocess.py', 'PYMODULE')])
|
||||
@ -1,16 +0,0 @@
|
||||
excluded module named _frozen_importlib - imported by importlib, importlib.abc, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named _frozen_importlib_external - imported by importlib._bootstrap, importlib, importlib.abc, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named _winreg - imported by platform, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named _scproxy - imported by urllib.request
|
||||
missing module named java - imported by platform, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named 'java.lang' - imported by platform, /root/Desktop/Xcertify-master/publish.py, xml.sax._exceptions
|
||||
missing module named vms_lib - imported by platform, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named msvcrt - imported by subprocess, /root/Desktop/Xcertify-master/publish.py, getpass
|
||||
missing module named _winapi - imported by subprocess, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named winreg - imported by platform, mimetypes, /root/Desktop/Xcertify-master/publish.py, urllib.request
|
||||
missing module named _dummy_threading - imported by dummy_threading, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named nt - imported by os, ntpath, shutil, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named 'org.python' - imported by copy, /root/Desktop/Xcertify-master/publish.py, xml.sax
|
||||
missing module named org - imported by pickle, /root/Desktop/Xcertify-master/publish.py
|
||||
missing module named htmlentitydefs - imported by htmlmin.python3html
|
||||
missing module named markupbase - imported by htmlmin.python3html.parser
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 53 KiB |
@ -1,23 +0,0 @@
|
||||
body{
|
||||
font:Arial;
|
||||
margin:0px;
|
||||
}
|
||||
.container{
|
||||
width:650px;
|
||||
height:480px;
|
||||
background:url('bg.jpg') no-repeat;
|
||||
text-align: center;
|
||||
padding-top:40px;
|
||||
margin:auto;
|
||||
}
|
||||
h1{
|
||||
font:;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
h3{
|
||||
margin:3px 0;
|
||||
}
|
||||
h2{
|
||||
margin-top: 3px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 53 KiB |
@ -1,16 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Certificate</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>CERTIFICATE</h1>
|
||||
<h3>of</h3>
|
||||
<h2>EXCELLENCE</h2>
|
||||
<p>We present this certifiate to <br> <b>{{name}}</b> <br> in appreciation of his successfull work at <b>{{company}}</b> <br> during the period of <b>{{start_date}}</b> to <b>{{end_date}}</b> </p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@ -1,23 +0,0 @@
|
||||
body{
|
||||
font:Arial;
|
||||
margin:0px;
|
||||
}
|
||||
.container{
|
||||
width:650px;
|
||||
height:480px;
|
||||
background:url('bg.jpg') no-repeat;
|
||||
text-align: center;
|
||||
padding-top:40px;
|
||||
margin:auto;
|
||||
}
|
||||
h1{
|
||||
font:;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
h3{
|
||||
margin:3px 0;
|
||||
}
|
||||
h2{
|
||||
margin-top: 3px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
@ -1,45 +0,0 @@
|
||||
import re
|
||||
import subprocess
|
||||
import htmlmin
|
||||
template=open("html/index.html", "r")
|
||||
page_html=template.read()
|
||||
page_html = htmlmin.minify(page_html, remove_empty_space=True)
|
||||
print("Loaded Default Theme.")
|
||||
#regex for identifying attributes
|
||||
exp =r"{{\w+}}"
|
||||
attributes = re.findall(exp,page_html)
|
||||
r_attributes = attributes[:]
|
||||
print()
|
||||
print("Detected following attributes")
|
||||
#removing curly brackets from attribute
|
||||
for i in range(0,len(attributes)):
|
||||
attributes[i] = attributes[i][2:-2]
|
||||
print(str(i+1)+". "+attributes[i])
|
||||
|
||||
values=[]
|
||||
print("Input Values for new certificate");
|
||||
for i in range(0,len(attributes)):
|
||||
inp = input(attributes[i]+" : ")
|
||||
values.append(inp)
|
||||
|
||||
#replacing values in the code
|
||||
for i in range(0,len(values)):
|
||||
page_html = page_html.replace(r_attributes[i],values[i])
|
||||
|
||||
print(len(page_html))
|
||||
|
||||
receiver = input("Enter Receiver's Address: ")
|
||||
|
||||
#signing the certificate
|
||||
sender = input("Enter your Address(for signing the certificate): ")
|
||||
signature = subprocess.check_output(["flo-cli","signmessage",sender,str(page_html)])
|
||||
signature = str(signature)
|
||||
signature = signature[2:-3]
|
||||
print(len(signature))
|
||||
page_html = signature+page_html
|
||||
|
||||
#writing the certificate on the blockchain
|
||||
txid = subprocess.check_output(["flo-cli", "sendtoaddress",receiver,"0.01",'""','""',"true","false","10",'UNSET',str(page_html)])
|
||||
txid = str(txid)
|
||||
txid = txid[2:-3]
|
||||
print("Certificate Successfully Generated: "+txid)
|
||||
@ -1,29 +0,0 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(['publish.py'],
|
||||
pathex=['/root/Desktop/Xcertify-master'],
|
||||
binaries=[],
|
||||
datas=[],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
name='publish',
|
||||
debug=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
runtime_tmpdir=None,
|
||||
console=True )
|
||||
@ -1,30 +0,0 @@
|
||||
import subprocess
|
||||
import json
|
||||
import webbrowser
|
||||
|
||||
txid = input("Enter Certificate Id: ")
|
||||
rawtx = subprocess.check_output(["flo-cli", "getrawtransaction", str(txid)])
|
||||
rawtx = str(rawtx)
|
||||
rawtx = rawtx[2:-3]
|
||||
|
||||
tx = subprocess.check_output(["flo-cli",, "decoderawtransaction", str(rawtx)])
|
||||
content = json.loads(tx)
|
||||
page_html = content['floData']
|
||||
|
||||
signature = page_html[0:88]
|
||||
page_html = page_html[88:]
|
||||
|
||||
issued_by = input("Enter address of the issuing authority: ")
|
||||
status = subprocess.check_output(["flo-cli","verifymessage",issued_by,signature,str(page_html)])
|
||||
status = str(status)
|
||||
status = status[2:-3]
|
||||
|
||||
if(status=='true'):
|
||||
print("Certificate verification successfull.")
|
||||
cert = open("./certificates/"+txid+".html",'w')
|
||||
cert.write(page_html)
|
||||
url = "./certificates/"+txid+".html"
|
||||
webbrowser.open_new(url)
|
||||
else:
|
||||
print('The certificate is invalid.')
|
||||
|
||||
Binary file not shown.
83
main2.py
83
main2.py
@ -1,83 +0,0 @@
|
||||
from tkinter import *
|
||||
import subprocess
|
||||
import os
|
||||
import webbrowser
|
||||
|
||||
current_dir=os.getcwd()
|
||||
|
||||
class FLOappStore:
|
||||
def __init__(self, root):
|
||||
self.root = root
|
||||
|
||||
def medici(self):
|
||||
webbrowser.open("https://www.mediciventures.com/",new=1)
|
||||
|
||||
def alexandria(self):
|
||||
webbrowser.open("https://alexandria.io/browser/",new=1)
|
||||
|
||||
def caltech(self):
|
||||
webbrowser.open("https://etdb.caltech.edu/browse",new=1)
|
||||
|
||||
def tzero(self):
|
||||
webbrowser.open("https://www.tzero.com/",new=1)
|
||||
|
||||
def worldmood(self):
|
||||
webbrowser.open("http://worldmood.io/",new=1)
|
||||
|
||||
def flotorizer(self):
|
||||
webbrowser.open("http://flotorizer.net/",new=1)
|
||||
|
||||
def xcertify(self):
|
||||
os.chdir('apps/Xcertify/')
|
||||
os.system('gnome-terminal -- ./xcertify')
|
||||
os.chdir(current_dir)
|
||||
|
||||
def aternalove(self):
|
||||
os.chdir('apps/Aterna-Love/')
|
||||
os.system('gnome-terminal -- ./auto-aterna-love.sh')
|
||||
os.chdir(current_dir)
|
||||
|
||||
def start(self):
|
||||
self.MainFrame = Frame(self.root, height=1000,width=500)
|
||||
self.MainFrame.pack()
|
||||
WelcomeLabel = Label(self.MainFrame,text="FLO AppStore",font=("Arial", 20))
|
||||
WelcomeLabel.grid(column = 1, columnspan =4)
|
||||
self.img1 = PhotoImage(file="Logos/SharedSecret.png")
|
||||
button1 = Button(self.MainFrame,image = self.img1,width="187",height="186",command=lambda:self.execute('apps/FLO-Shared-Secret/FLO_Secret'))
|
||||
button1.grid(row=2,column=1)
|
||||
self.img2 = PhotoImage(file="Logos/Medici.png")
|
||||
button2 = Button(self.MainFrame,image=self.img2, width="187",height="186",command=self.medici)
|
||||
button2.grid(row=2, column=2)
|
||||
self.img3= PhotoImage(file="Logos/Flotorizer.png")
|
||||
button3= Button(self.MainFrame,image=self.img3,width="187",height="186",command=self.flotorizer)
|
||||
button3.grid(row=2,column=3)
|
||||
self.img4 = PhotoImage(file="Logos/WorldMood.png")
|
||||
button4 = Button(self.MainFrame,image=self.img4,width="187",height="186",command=self.worldmood)
|
||||
button4.grid(row=2,column=4)
|
||||
self.img5 = PhotoImage(file="Logos/tZero.png")
|
||||
button5 = Button(self.MainFrame, image=self.img5, width="187", height="186",command=self.tzero)
|
||||
button5.grid(row=3, column=1)
|
||||
self.img6 = PhotoImage(file="Logos/Alexandria.png")
|
||||
button6 = Button(self.MainFrame, image=self.img6, width="187", height="186",command=self.alexandria)
|
||||
button6.grid(row=3, column=2)
|
||||
self.img7 = PhotoImage(file="Logos/Caltech.png")
|
||||
button7 = Button(self.MainFrame, image=self.img7, width="187", height="186",command=self.caltech)
|
||||
button7.grid(row=3, column=3)
|
||||
self.img8 = PhotoImage(file="Logos/Xcertify.png")
|
||||
button8 = Button(self.MainFrame, image=self.img8, width="187", height="186",command=self.xcertify)
|
||||
button8.grid(row=3, column=4)
|
||||
self.img9 = PhotoImage(file="Logos/Florate.png")
|
||||
button9 = Button(self.MainFrame, image=self.img9, width="187", height="186",command=lambda:self.execute('apps/Florate/Florate'))
|
||||
button9.grid(row=4, column=1)
|
||||
self.img10 = PhotoImage(file="Logos/AternaLove.png")
|
||||
button10 = Button(self.MainFrame, image=self.img10, width="187", height="186",command=self.aternalove)
|
||||
button10.grid(row=4, column=2)
|
||||
|
||||
|
||||
def execute(self,f):
|
||||
subprocess.run([f])
|
||||
root = Tk()
|
||||
root.title("FLOappStore")
|
||||
gui = FLOappStore(root)
|
||||
gui.start()
|
||||
root.mainloop()
|
||||
13
test.py
13
test.py
@ -1,13 +0,0 @@
|
||||
from tkinter import *
|
||||
from tkinter import messagebox
|
||||
import subprocess
|
||||
import os
|
||||
import webbrowser
|
||||
import json
|
||||
app={}
|
||||
app["location"] = 'apps/FLO-shared-secret/'
|
||||
app["github"] = "https://github.com/akhil2015/FLO-shared-secret.git"
|
||||
print(os.path.isdir(app["location"]))
|
||||
#print(os.path.isdir(app["location"]) and subprocess.Popen("git config --get remote.origin.url",cwd=app["location"],stdout=subprocess.PIPE,shell=True).communicate()[0].decode("utf-8")==app["github"])
|
||||
#print(subprocess.Popen("git diff --raw",cwd=app["location"],stdout=subprocess.PIPE,shell=True).communicate()[0]=="")
|
||||
subprocess.Popen(['rm', '-rf', app['location']])
|
||||
Loading…
Reference in New Issue
Block a user