Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
var determineContainer = function(tiddler, fuzzy) { // TODO: expose?
var bag = tiddler.fields["server.bag"];
var recipe = tiddler.fields["server.recipe"]; // XXX: unused/irrelevant/redundant!?
if(bag) {
return { type: "bag", name: bag };
} else if(recipe) {
return { type: "recipe", name: recipe };
} else if(fuzzy) { // new tiddler
var workspace = tiddler.fields["server.workspace"];
if(workspace) {
var container = split(workspace, "/", "l");
return ["bags", "recipes"].contains(container.type) ? container : false;
} else {
return false;
}
} else {
return false;
}
};
(function($) {
var tweb = config.extensions.tiddlyweb;
var recipe = config.defaultCustomFields["server.workspace"].split("recipes/")[1];
var currentSpace; // assigned later
var disabledTabs = [];
var coreBags = ["system", "tiddlyspace"];
var systemSpaces = ["plugins", "info", "images", "theme"];
systemSpaces = $.map(systemSpaces, function(item, i) {
return "system-%0_public".format(item);
});
// hijack search macro to add custom attributes for mobile devices
var _search = config.macros.search.handler;
config.macros.search.handler = function(place, macroName, params) {
_search.apply(this, arguments);
$(".searchField:input", place).
attr({ autocapitalize: "off", autocorrect: "off" });
if(readOnly) {
$('<div class="annotation">').text(locale.membersOnly).
appendTo(place);
return;
}
var bag = options.bag;
options.callback = options.callback ? options.callback :
function(place, fileName, workspace, baseurl) {
macro.displayFile(place, fileName, workspace);
displayMessage(locale.loadSuccess.format(fileName));
$("input[type=text]", place).val("");
};
var defaults = config.defaultCustomFields;
place = $("<div>").addClass("container").appendTo(place)[0];
var workspace = bag ? "bags/%0".format(bag) : config.defaultCustomFields["server.workspace"];
var baseURL = defaults["server.host"];
baseURL += (baseURL[baseURL.length - 1] !== "/") ? "/" : "";
baseURL = "%0%1/tiddlers".format(baseURL, workspace);
//create the upload form, complete with invisible iframe
var iframeName = "binaryUploadiframe%0".format(Math.random());
// do not refactor following line of code to work in IE6.
var form = $('<form enctype="multipart/form-data" method="POST" action="%0">'.
format(baseURL)).addClass("binaryUploadForm").
appendTo(place)[0];
macro.renderInputFields(form, options);
$(form).
append('<div class="binaryUploadFile"><input name="file" type="file"></div>').
append('<div class="binaryUploadSubmit"><input disabled="" value="Upload" type="submit"></div>').
submit(function(ev) {
this.target = iframeName;
options.target = iframeName;
macro.uploadFile(place, baseURL, workspace, options);</form></div></div>
provider: "phone",
user_id,
uid: this.session.uid,
phone,
verified: false,
confirmation_code
});
}
console.log(
'-- /submit_mobile -->',
this.session.uid,
this.session.user,
phone,
mid.id
);
const ip = getRemoteIp(this.req);
// const twilioResult = yield twilioVerify(phone);
// console.log('-- /submit_mobile twilioResult -->', twilioResult);
//
// if (twilioResult === 'block') {
// mid.update({score: 111111});
// this.flash = { error: 'Unable to verify your phone number. Please try a different phone number.' };
// this.redirect(enterMobileUrl);
// return;
// }
const verifyResult = yield teleSignVerify({
mobile: phone,
confirmation_code,
ip,
ignore_score: true //twilioResult === 'pass'
.sha256(crypto.randomBytes(32))
.toString('hex');
yield user.update({ creation_hash: creationHash });
// disable session/multi account for now
// const existing_created_account = yield models.Account.findOne({
// attributes: ['id'],
// where: {user_id, ignored: false, created: true},
// order: 'id DESC'
// });
// if (existing_created_account) {
// throw new Error("Only one Steem account per user is allowed in order to prevent abuse");
// }
const remote_ip = getRemoteIp(this.req);
// rate limit account creation to one per IP every 10 minutes
const same_ip_account = yield models.Account.findOne({
attributes: ['created_at'],
where: { remote_ip: esc(remote_ip), created: true },
order: 'id DESC',
});
if (same_ip_account) {
const minutes =
(Date.now() - same_ip_account.created_at) / 60000;
if (minutes < 10) {
console.log(
`api /accounts: IP rate limit for user ${
this.session.uid
} #${user_id}, IP ${remote_ip}`
);
throw new Error(
.sha256(crypto.randomBytes(32))
.toString('hex');
yield user.update({ creation_hash: creationHash });
// disable session/multi account for now
// const existing_created_account = yield models.Account.findOne({
// attributes: ['id'],
// where: {user_id, ignored: false, created: true},
// order: 'id DESC'
// });
// if (existing_created_account) {
// throw new Error("Only one Steem account per user is allowed in order to prevent abuse");
// }
const remote_ip = getRemoteIp(this.req);
// rate limit account creation to one per IP every 10 minutes
const same_ip_account = yield models.Account.findOne({
attributes: ['created_at'],
where: { remote_ip: esc(remote_ip), created: true },
order: 'id DESC',
});
if (same_ip_account) {
const minutes =
(Date.now() - same_ip_account.created_at) / 60000;
if (minutes < 10) {
console.log(
`api /accounts: IP rate limit for user ${
this.session.uid
} #${user_id}, IP ${remote_ip}`
);
throw new Error(
}, function(result) {
if (result.rc === 'ok') {
COMM.setInitToken(result.initToken);
$.extend(exports.server, result.server);
exports.server.version = result["server.version"];
exports.server.time = result.serverTime;
ready.resolve();
} else {
console.log("ERROR: " + result.message)
// MSG.displayInformation(result, "", result.message);
}
}, 'init gui state model');
}
showRevisions: function(tiddlerElem, tiddler, pageSize) {
var context = {
host: tiddler.fields["server.host"],
workspace: tiddler.fields["server.workspace"]
};
$(tiddlerElem).addClass("revisions").attr("revName", tiddler.title);
// ensure toolbar commands deactivate RevisionsView
$("a", ".toolbar", tiddlerElem).each(function(index, btn) {
var _onclick = btn.onclick;
btn.onclick = function(e) {
me.closeRevisions(tiddlerElem);
_onclick.apply(this, arguments);
};
});
// ensure default action deactivates RevisionsView
var _ondblclick = tiddlerElem.ondblclick;
tiddlerElem.ondblclick = function(e) {
me.closeRevisions(tiddlerElem);
_ondblclick.apply(this, arguments);
};
ccTiddlyAdaptor.prototype.putTiddler = function(tiddler,context,userParams,callback){
context = this.setContext(context,userParams,callback);
context.title = tiddler.title;
if(window.location.search.substring(1))
var postParams = window.location.search.substring(1);
else
var postParams = "";
var recipeuriTemplate = '%0/handle/save.php';
var host = context.host ? context.host : this.fullHostName(tiddler.fields['server.host']);
var uri = recipeuriTemplate.format([host,context.workspace,tiddler.title]);
var d = new Date();
d.setTime(Date.parse(tiddler['modified']));
d = d.convertToYYYYMMDDHHMM();
// SEO Code
if(workspace)
var breaker = "/";
else
var breaker = "";
var el = createTiddlyElement(document.body, "div", "ccTiddlyTMP", null, null, { "style.display": "none" });
el.style.display = "none"; // Just in case the above command is ignored
var formatter = new Formatter(config.formatters);
var wikifier = new Wikifier(tiddler.text,formatter,null,tiddler);
wikifier.isStatic = true;
handler: function(ev, src, title) {
var tiddler = store.getTiddler(title);
var adaptor = tiddler.getAdaptor();
var space = ns.determineSpace(tiddler, false);
var context = {
host: adaptor.fullHostName(tiddler.fields["server.host"]),
workspace: "bags/%0_public".format([space.name])
};
var popup = Popup.create(src, "div");
var msg = cmd.loadingMsg.format([title]);
popup = $(popup).html(msg);
Popup.show(); // XXX: can be irritating if it just flashes quickly
var callback = function(context, userParams) {
if(context.status) {
ns.spawnPublicTiddler(context.tiddler, src);
Popup.remove();
} else {
var msg = cmd.noPubError.format([context.tiddler.title]);
msg = $('<div class="annotation">').html(msg);
popup.empty().append(msg);
}
};</div>