Add phone pointer generate to cic_eth import user script
This commit is contained in:
parent
3448e41d5b
commit
eee2ff4430
@ -7,6 +7,7 @@ import argparse
|
|||||||
import uuid
|
import uuid
|
||||||
import datetime
|
import datetime
|
||||||
import time
|
import time
|
||||||
|
import phonenumbers
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
|
||||||
# third-party imports
|
# third-party imports
|
||||||
@ -17,7 +18,7 @@ from hexathon import (
|
|||||||
add_0x,
|
add_0x,
|
||||||
strip_0x,
|
strip_0x,
|
||||||
)
|
)
|
||||||
from chainlib.eth.address import to_checksum
|
from chainlib.eth.address import to_checksum_address
|
||||||
from cic_types.models.person import Person
|
from cic_types.models.person import Person
|
||||||
from cic_eth.api.api_task import Api
|
from cic_eth.api.api_task import Api
|
||||||
from chainlib.chain import ChainSpec
|
from chainlib.chain import ChainSpec
|
||||||
@ -75,6 +76,9 @@ os.makedirs(user_new_dir)
|
|||||||
meta_dir = os.path.join(args.user_dir, 'meta')
|
meta_dir = os.path.join(args.user_dir, 'meta')
|
||||||
os.makedirs(meta_dir)
|
os.makedirs(meta_dir)
|
||||||
|
|
||||||
|
phone_dir = os.path.join(args.user_dir, 'phone')
|
||||||
|
os.makedirs(os.path.join(phone_dir, 'meta'))
|
||||||
|
|
||||||
user_old_dir = os.path.join(args.user_dir, 'old')
|
user_old_dir = os.path.join(args.user_dir, 'old')
|
||||||
os.stat(user_old_dir)
|
os.stat(user_old_dir)
|
||||||
|
|
||||||
@ -165,12 +169,32 @@ if __name__ == '__main__':
|
|||||||
f.write(json.dumps(o))
|
f.write(json.dumps(o))
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
#old_address = to_checksum(add_0x(y[:len(y)-5]))
|
|
||||||
#fi.write('{},{}\n'.format(new_address, old_address))
|
#fi.write('{},{}\n'.format(new_address, old_address))
|
||||||
meta_key = generate_metadata_pointer(bytes.fromhex(new_address_clean), 'cic.person')
|
meta_key = generate_metadata_pointer(bytes.fromhex(new_address_clean), 'cic.person')
|
||||||
meta_filepath = os.path.join(meta_dir, '{}.json'.format(new_address_clean.upper()))
|
meta_filepath = os.path.join(meta_dir, '{}.json'.format(new_address_clean.upper()))
|
||||||
os.symlink(os.path.realpath(filepath), meta_filepath)
|
os.symlink(os.path.realpath(filepath), meta_filepath)
|
||||||
|
|
||||||
|
phone_object = phonenumbers.parse(u.tel)
|
||||||
|
phone = phonenumbers.format_number(phone_object, phonenumbers.PhoneNumberFormat.E164)
|
||||||
|
meta_phone_key = generate_metadata_pointer(phone.encode('utf-8'), ':cic.phone')
|
||||||
|
meta_phone_filepath = os.path.join(phone_dir, 'meta', meta_phone_key)
|
||||||
|
|
||||||
|
filepath = os.path.join(
|
||||||
|
phone_dir,
|
||||||
|
'new',
|
||||||
|
meta_phone_key[:2].upper(),
|
||||||
|
meta_phone_key[2:4].upper(),
|
||||||
|
meta_phone_key.upper(),
|
||||||
|
)
|
||||||
|
os.makedirs(os.path.dirname(filepath), exist_ok=True)
|
||||||
|
|
||||||
|
f = open(filepath, 'w')
|
||||||
|
f.write(to_checksum_address(new_address_clean))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
os.symlink(os.path.realpath(filepath), meta_phone_filepath)
|
||||||
|
|
||||||
|
|
||||||
i += 1
|
i += 1
|
||||||
sys.stdout.write('imported {} {}'.format(i, u).ljust(200) + "\r")
|
sys.stdout.write('imported {} {}'.format(i, u).ljust(200) + "\r")
|
||||||
|
|
||||||
|
120
apps/contract-migration/scripts/cic_meta/import_meta_phone.js
Normal file
120
apps/contract-migration/scripts/cic_meta/import_meta_phone.js
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const http = require('http');
|
||||||
|
|
||||||
|
const cic = require('cic-client-meta');
|
||||||
|
|
||||||
|
//const conf = JSON.parse(fs.readFileSync('./cic.conf'));
|
||||||
|
|
||||||
|
const config = new cic.Config('./config');
|
||||||
|
config.process();
|
||||||
|
console.log(config);
|
||||||
|
|
||||||
|
|
||||||
|
function sendit(uid, envelope) {
|
||||||
|
const d = envelope.toJSON();
|
||||||
|
|
||||||
|
const contentLength = (new TextEncoder().encode(d)).length;
|
||||||
|
const opts = {
|
||||||
|
method: 'PUT',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Content-Length': contentLength,
|
||||||
|
'X-CIC-AUTOMERGE': 'client',
|
||||||
|
|
||||||
|
},
|
||||||
|
};
|
||||||
|
let url = config.get('META_URL');
|
||||||
|
url = url.replace(new RegExp('^(.+://[^/]+)/*$'), '$1/');
|
||||||
|
console.log('posting to url: ' + url + uid);
|
||||||
|
const req = http.request(url + uid, opts, (res) => {
|
||||||
|
res.on('data', process.stdout.write);
|
||||||
|
res.on('end', () => {
|
||||||
|
console.log('result', res.statusCode, res.headers);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (!req.write(d)) {
|
||||||
|
console.error('foo', d);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
req.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
function doOne(keystore, filePath) {
|
||||||
|
const signer = new cic.PGPSigner(keystore);
|
||||||
|
const parts = path.basename(filePath).split('.');
|
||||||
|
const ethereum_address = path.basename(parts[0]);
|
||||||
|
|
||||||
|
cic.Phone.toKey('0x' + ethereum_address).then((uid) => {
|
||||||
|
const o = fs.readFileSync(filePath, 'utf-8');
|
||||||
|
//const o = JSON.parse(d);
|
||||||
|
//console.log(o);
|
||||||
|
fs.unlinkSync(filePath);
|
||||||
|
|
||||||
|
const s = new cic.Syncable(uid, o);
|
||||||
|
s.setSigner(signer);
|
||||||
|
s.onwrap = (env) => {
|
||||||
|
sendit(uid, env);
|
||||||
|
};
|
||||||
|
s.sign();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const privateKeyPath = path.join(config.get('PGP_EXPORTS_DIR'), config.get('PGP_PRIVATE_KEY_FILE'));
|
||||||
|
const publicKeyPath = path.join(config.get('PGP_EXPORTS_DIR'), config.get('PGP_PRIVATE_KEY_FILE'));
|
||||||
|
pk = fs.readFileSync(privateKeyPath);
|
||||||
|
pubk = fs.readFileSync(publicKeyPath);
|
||||||
|
|
||||||
|
new cic.PGPKeyStore(
|
||||||
|
config.get('PGP_PASSPHRASE'),
|
||||||
|
pk,
|
||||||
|
pubk,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
importMetaPhone,
|
||||||
|
);
|
||||||
|
|
||||||
|
const batchSize = 16;
|
||||||
|
const batchDelay = 1000;
|
||||||
|
const total = parseInt(process.argv[3]);
|
||||||
|
const workDir = path.join(process.argv[2], 'phone/meta');
|
||||||
|
let count = 0;
|
||||||
|
let batchCount = 0;
|
||||||
|
|
||||||
|
|
||||||
|
function importMetaPhone(keystore) {
|
||||||
|
let err;
|
||||||
|
let files;
|
||||||
|
|
||||||
|
try {
|
||||||
|
err, files = fs.readdirSync(workDir);
|
||||||
|
} catch {
|
||||||
|
console.error('source directory not yet ready', workDir);
|
||||||
|
setTimeout(importMeta, batchDelay, keystore);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let limit = batchSize;
|
||||||
|
if (files.length < limit) {
|
||||||
|
limit = files.length;
|
||||||
|
}
|
||||||
|
for (let i = 0; i < limit; i++) {
|
||||||
|
const file = files[i];
|
||||||
|
if (file.substr(0) == '.') {
|
||||||
|
console.debug('skipping file', file);
|
||||||
|
}
|
||||||
|
const filePath = path.join(workDir, file);
|
||||||
|
doOne(keystore, filePath);
|
||||||
|
count++;
|
||||||
|
batchCount++;
|
||||||
|
if (batchCount == batchSize) {
|
||||||
|
console.debug('reached batch size, breathing');
|
||||||
|
batchCount=0;
|
||||||
|
setTimeout(importMeta, batchDelay, keystore);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count == total) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setTimeout(importMetaPhone, 100, keystore);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user