eppface
Version:
epp api
118 lines (112 loc) • 4.89 kB
JavaScript
function admin(epp, posts) {
this.list_transfer = function(page, cb, target) {
var from_transfer = "FROM transfer WHERE status='pending' AND side='agent'";
switch(target.obj) {
case 'domain':
from_transfer += " and obj='domain'";
break;
case 'contact':
from_transfer += " and obj='contact'";
break;
}
function _data(r) {
r.re_date = r.re_date.toISOString();
r.ac_date = r.ac_date.toISOString();
if(r.obj==='domain') r.ex_date = r.ex_date.toISOString();
return r;
}
function lists(count) {
var pages = Math.floor((count+posts-1)/posts);
if(page > pages) page = pages;
if(page < 1) page = 1;
epp.query("SELECT * "+from_transfer+" ORDER BY id DESC LIMIT ?,?", [(page-1)*posts, posts], function(err, rows) {
err ? cb() : cb('1000', {page: page, pages: pages, rows: rows.map(_data)});
});
}
epp.query("SELECT count(*) AS total "+from_transfer, function(err, rows) {
err ? cb() : rows[0].total ? lists(rows[0].total) : cb('1000', {page: 1, pages: 0, rows: []});
});
};
this.server_approve = function(id, cb) {
epp.query("SELECT * FROM transfer WHERE id=?", [id], function(err, rows) {
if(!err && rows.length) {
switch(rows[0].obj) {
case 'domain':
epp.query("update domain set user=? where name=?", [rows[0].re_id, rows[0].name]);
epp.query("update host set user=? where name=? or name like ?",
[rows[0].re_id, rows[0].name, '%.'+rows[0].name]);
var pay = epp.payment;
pay.done({
user: rows[0].ac_id,
op: 'transferOut',
domain: rows[0].name,
appID: '',
registrant: '',
opDate: (new Date()).toISOString(),
price: 0,
period: 0,
exDate: rows[0].ex_date.toISOString(),
oldID: '',
uniID: 'transferOut-'+rows[0].id
});
pay.done({
user: rows[0].re_id,
op: 'transferIn',
domain: rows[0].name,
appID: '',
registrant: '',
opDate: (new Date()).toISOString(),
price: 0,
period: 0,
exDate: rows[0].ex_date.toISOString(),
oldID: '',
uniID: 'transferIn-'+rows[0].id
});
break;
case 'contact':
epp.query("update contact set user=? where name=?", [rows[0].re_id, rows[0].name]);
break;
}
epp.query("UPDATE transfer SET status='serverApproved',ac_date=now(),ack='no' WHERE id=?", [id]);
}
cb('1000');
});
};
this.server_cancel = function(id, cb) {
epp.query("UPDATE transfer SET status='serverCancelled',ac_date=now(),ack='no' WHERE id=?", [id], function() {
cb('1000');
});
};
this.list_launch = function(page, cb) {
var from_launch_domain = "from launch_domain where status!='allocated' AND status!='rejected'";
function _data(rows) {
var _rows = [];
for(var i=0; i<rows.length; i++) {
var json = JSON.parse(rows[i].json);
_rows.push({
id : rows[i].ap_id,
name : rows[i].name,
registrant: json.registrant,
ex_date : rows[i].ex_date.toISOString(),
pw : json.pw,
phase : rows[i].phase,
user : rows[i].user
});
}
return _rows;
}
function lists(count) {
var pages = Math.floor((count+posts-1)/posts);
if(page > pages) page = pages;
if(page < 1) page = 1;
epp.query("SELECT * "+from_launch_domain+" ORDER BY id DESC LIMIT ?,?",
[(page-1)*posts, posts], function(err, rows) {
err ? cb() : cb('1000', {page: page, pages: pages, rows: _data(rows)});
});
}
epp.query("select count(*) AS total "+from_launch_domain, function(err, rows) {
err ? cb() : rows[0].total ? lists(rows[0].total) : cb('1000', {page: 1, pages: 0, rows: []});
});
};
}
module.exports = admin;