From a13e66b007f9bd338d11eebecbdc0514dbbe0f15 Mon Sep 17 00:00:00 2001 From: status404 Date: Tue, 12 Nov 2024 13:29:11 +0300 Subject: [PATCH] add docker registry --- build/content/locale/en_US.js | 866 +++++++++++++++++----------------- build/content/locale/ru_RU.js | 2 +- docker-compose.yml | 12 + docker/Dockerfile | 50 ++ docker/nginx.conf | 78 +++ 5 files changed, 574 insertions(+), 434 deletions(-) create mode 100644 docker-compose.yml create mode 100644 docker/Dockerfile create mode 100644 docker/nginx.conf diff --git a/build/content/locale/en_US.js b/build/content/locale/en_US.js index 459fd74..c57b3ef 100644 --- a/build/content/locale/en_US.js +++ b/build/content/locale/en_US.js @@ -1,433 +1,433 @@ -window.appMessages["en-US"] = { - "submit": "Submit", - "save": "Save", - "proceed": "Proceed", - "change": "Change", - "edit": "Edit", - "copied": "Copied to the clipboard", - "copy": "Copy to clipboard", - "save.success": "Changes has been saved", - "save.fail": "Unable to save changes", - "delete": "Delete", - "delete.success": "Deleted succesfully", - "delete.fail": "Unable to delete", - "delete.sure": "Confirm delete?", - "kb": "Kb", - "file.size.exceed": "Max file size exceeded", - "file.read.failed": "Error while reading file", - "cancell": "Cancell", - "yes": "Yes", - "no": "No", - "nothing.found": "Nothing found", - "unknown.error": "Unknown error", - "close": "Close", - "method.success": "Action completed", - "method.fail": "Unable to complete this action", - "method.confirm.title": "Action confirm", - "method.confirm.text": "This action could not been undone", - - "signup.signup": "Sign Up", - "signup.text": "Please Sing up to get an access to whole system functionality", - "signup.address": "BTC Address", - "signup.address.invalid": "Provide BTC Adress", - "signup.email": "Email", - "signup.email.invalid": "Incorrect email", - "signup.password": "Password", - "signup.password.invalid": "Set the password", - "signup.password.confirm": "Confirm password", - "signup.password.confirm.empty": "Confirm the password", - "signup.password.confirm.invalid": "Password don't match the confirmation", - "signup.forgot": "Forgot password?", - "signup.or": "or", - "signup.signin": "Sign in", - "signup.iaccept": "I accept", - "signup.mainpage": "Back to mainpage", - "signup.terms": "terms and conditions", - "signup.iaccept.invalid": "You have to accept terms and conditions", - "signup.success": "You have successfully registered.", - "signup.responce": "Server responce", - "signup.additional": "Additional info", - "signup.key": "BTC Key", - "signup.pgp": "PGP Key", - "signup.bitmessage": "Bitmessages", - "signup.unsecure": "* Not secure", - - "signin.signin": "Sing In", - "signin.text": "Please authorize to get an access to restricted sections", - "signin.identity": "Login", - "signin.identity.invalid": "Login is required", - "signin.password": "Password", - "signin.password.invalid": "Password is required", - "signin.or": "or", - "signin.signup": "Sign Up", - "signin.forgot": "Forget password?", - "signin.google": "Login with Google", - "signin.by.login": "By password", - "signin.by.secret": "By secret key", - "signin.by.signature": "By bitcoin signature", - "signin.secret": "Secret key", - "signin.signthis": "Sign this text using bitcoin public key", - "signin.bitadress": "Bitcoin address", - "signin.signed": "Signed string", - "signin.timer.remain": "String validity remaining", - "signin.timer.end": "String is outdated", - "signin.timer.refresh": "Generate new", - "signin.rqrd": "This field is required", - "signin.bysig.unavailable": "Authorization by signature is unavailable", - "signin.responce": "Server responce", - - "recovery.recovery": "Recover password", - "recovery.text": "Provide your bitmessage or email address to recover your password.", - "recovery.email": "Email", - "recovery.identifier": "Bitmessage или Email", - "recovery.email.invalid": "Incorrect email", - "recovery.proceed": "Proceed", - "recovery.or": "or", - "recovery.signin": "Sign in", - "recovery.proceedSuccess": "Instructions to recover your password were sent to you.", - "recovery.resetSuccess": "Password successfully changed.", - "recovery.password": "New password", - "recovery.password.invalid": "Provide new password", - - "userprofile.logout": "Log out", - "userprofile.login": "Sign In", - "userprofile.private": "Account data", - "userprofile.dark": "Dark theme", - "userprofile.profile": "Change profile", - "userprofile.deals": "Deals", - "userprofile.active": "Active", - "userprofile.admin": "Admin", - "userprofile.admin.link": "Admin panel", - "userprofile.guest": "Guest", - "userprofile.email": "Email (not secure)", - "userprofile.email.invalid": "Incorrect email", - "userprofile.passchange": "Change password", - "userprofile.oldpass": "Current password or secret code", - "userprofile.newpass": "New password", - "userprofile.name": "Name", - "userprofile.name.invalid": "This field is required", - "userprofile.avatar.change": "Upload photo", - "userprofile.avatar.remove": "Remove current", - "userprofile.connection": "Connection link", - "userprofile.copied": "Link now in a clipboard", - "userprofile.payload": "Server responce", - "userprofile.responce": "Server responce", - "userprofile.accountdata": "Account data", - "userprofile.accountdata.key": "BTC public key", - "userprofile.key": "BTC public key", - "userprofile.accountdata.pgp": "PGP public key", - "userprofile.pgp": "PGP public key", - "userprofile.accountdata.url": "List URL", - "userprofile.url": "List URL (new on each line)", - "userprofile.accountdata.bitmessage": "Bitmessages", - "userprofile.bitmessage": "Bitmessages", - - "signmodal.copied":"Text now in the clipboard", - "signmodal.title":"You have to sign the request", - "signmodal.signature":"Signature", - - "deals.statename":"State", - "deals.typename":"Type", - "deals.date":"Date", - "deals.sellercode":"Seller", - "deals.customercode":"Customer", - "deals.paymentcode":"Payment", - "deals.sum":"Amount", - "deals.leavebefore":"Before", - "deals.statustext":"Feedback", - "deals.comments":"Feedback text", - "deals.refund":"Refund", - "deals.fee":"Fee", - "deals.info":"Deal Info", - "deals.leave.feedback":"Leave feedback", - "deals.text":"Feedback text", - "deals.responce":"Server responce", - "deals.download":"Get as CSV", - "deals.cancell":"Cancell deal", - "deals.cancell.text":"Cancellation comments", - - "dm.dm":"Deal Module", - "dm.tab.info":"Account info", - "dm.tab.create":"Create deal", - "dm.tab.manage":"Check & Manage deal", - "dm.create.title":"Create deal", - "dm.create.type":"Type", - "dm.create.seller_address":"Seller address", - "dm.create.customer_address":"Customer address", - "dm.create.payment_sum":"Payment sum", - "dm.create.at":"Create at", - "dm.create.date":"Deal date", - "dm.create.leaveBefore":"Leave feedback before", - "dm.create.until":"Pay until", - "dm.create.btn.extra":"Show extra parameters...", - "dm.codeinput.show":"Show deal", - "dm.codeinput.code":"Payment address", - "dm.codeinput.title":"Check & Manage deal", - "dm.deal.status.error":"Unable to get any info about specified deal", - "dm.deal.refresh":"Try again", - "dm.deal.responce.original":"Original server's responce", - "dm.deal.deal":"Deal information", - "dm.deal.at":"At", - "dm.deal.date":"Date", - "dm.deal.type":"Type", - "dm.deal.code":"Code", - "dm.deal.customer":"Customer", - "dm.deal.seller":"Seller", - "dm.deal.payment":"Payment", - "dm.deal.sum":"Sum", - "dm.account.status.error":"Unable to get account info", - "dm.account.responce.original":"Original server's responce", - "dm.account.info":"Account details", - "dm.account.address":"Bitcoin adress", - "dm.account.bitmessages":"Bitmessages", - "dm.account.btckey":"BTC Key", - "dm.account.pgpkey":"PGP Key", - "dm.account.positive":"Positive feedback count", - "dm.account.total":"Total feedback count", - "dm.account.seller":"Seller rating", - "dm.account.customer":"Customer rating", - "dm.account.registered":"Register date", - "dm.accountinput.title":"Account info", - "dm.accountinput.id":"Account address", - "dm.accountinput.show":"Show info", - "dm.deal.complete.feedback":"Feedback", - "dm.deal.complete.toSeller":"To Seller (%)", - "dm.deal.complete.toCustomer":"To Customer (%)", - "dm.deal.complete.btn.complete":"Complete deal", - "dm.feedback.date":"Date", - "dm.feedback.statustext":"Feedback", - - - "private.dash.dash":"Account data", - "private.dash.urlaccount":"Account URL", - "private.dash.urltrusted":"Trusted URL", - "private.dash.docs":"Documentation", - "private.dash.account.data":"Account data", - "private.dash.address":"Bitcoin address", - "private.dash.bitmessages":"Bitmessage address", - "private.dash.btckey":"Bitcoin key", - "private.dash.pgpkey":"PGP key", - "private.dash.edit":"Change data", - "private.dash.email":"E-mail", - - "private.deals.deals":"Deals", - "private.deals.tab.arbitrator":"Arbitrator", - "private.deals.tab.seller":"Seller", - "private.deals.tab.customer":"Customer", - - "rating.rating":"Rating", - "rating.followers":"Trusted by", - "rating.regdate":"Register date", - "rating.feedback":"Feedback", - - "confirm.confirm": "Confirm email", - "confirm.text": "Confiramtion code was sent to your email.", - "confirm.success": "Your email successfully confirmed.", - "confirm.nowucan": "Now you can", - "confirm.signin": "Sign In", - "confirm.code": "Confirmation code", - "confirm.code.invalid": "Confirmation code is required", - "confirm.proceed": "Proceed", - - "icons.search": "Search", - "icons.notifications": "Notifications", - "icons.admin": "Admin", - - "menu.index": "BitDeals", - "menu.about": "About", - "menu.manual": "Manual", - "menu.faq": "FAQ", - "menu.terms": "Terms", - "menu.admin.journals": "Journals", - "menu.admin.groups": "Users", - "menu.admin.tools": "Tools", - "menu.admin.settings": "Settings", - - "menu.private.index":"BitDeals", - "menu.private.profile":"Profile", - "menu.private.seller":"Seller", - "menu.private.customer":"Customer", - "menu.private.arbitrator":"Arbitrator", - - "search.placeholder": "Search...", - "search.search": "Search", - "search.results": "Search results", - - "admin.apilog.apilog": "API query log", - "admin.apilog.datetime": "Date, time", - "admin.apilog.username": "User", - "admin.apilog.path": "Path", - - "admin.dblog.dblog": "Event log", - "admin.dblog.datetime": "Date, time", - "admin.dblog.username": "User", - "admin.dblog.type": "Type", - "admin.dblog.session": "Session", - "admin.dblog.code": "Code", - "admin.dblog.event": "Event", - "admin.dblog.text": "Text", - - "admin.groups.groups": "Groups", - "admin.groups.btn.add": "Add group", - "admin.groups.btn.delete": "Remove group", - "admin.groups.system": "System group", - "admin.groups.name": "Name", - "admin.groups.username": "Code", - "admin.groups.description": "Description", - - "admin.users.users": "Users", - "admin.users.btn.block": "Block user", - "admin.users.btn.delete": "Remove user", - "admin.users.name": "Name", - "admin.users.username": "Login", - "admin.users.email": "E-mail", - "admin.users.password": "Set password", - "admin.users.created": "Created", - "admin.users.statustext": "State", - "admin.users.phone": "Phone", - "admin.users.description": "Description", - "admin.users.passwordchange": "Have to change password", - "admin.users.passwordnotchange": "Don't change password", - "admin.users.title.name": "Name", - "admin.users.title.created": "Created", - "admin.users.title.input_last": "Last activity", - "admin.users.tab.profile": "Profile", - "admin.users.tab.groups": "Groups", - "admin.users.tab.ip": "IP Addresses", - "admin.users.iptable.allowed": "Allowed", - "admin.users.iptable.denied": "Denied", - "admin.users.iptable.none": "No IP addreses", - "admin.users.iptable.prompt": "Input IP address", - "admin.users.tab.interfaces": "Interfaces", - - "admin.registry.registry": "Registry", - "admin.registry.btn.add": "Add parameter", - "admin.registry.btn.delete": "Remove branch", - "admin.registry.key": "Key", - "admin.registry.subkey": "Subkey (path)", - "admin.registry.name": "Name", - "admin.registry.type": "Type", - "admin.registry.integer": "Integer", - "admin.registry.number": "Number", - "admin.registry.datetime": "Date and time", - "admin.registry.string": "String", - "admin.registry.boolean": "Yes / No", - "admin.registry.data": "Value", - "admin.registry.valuename": "Name", - "admin.registry.value": "Value", - - "admin.console.console": "API Console", - "admin.console.query": "Path", - "admin.console.params": "Parameters", - "admin.console.submit": "Query", - "admin.console.object": "As a object", - "admin.console.table": "As a table", - - "admin.resource.resource": "Resources", - "admin.resource.btn.add": "Add", - "admin.resource.btn.delete": "Delete", - "admin.resource.node": "Node", - "admin.resource.name": "Name", - "admin.resource.description": "Description", - "admin.resource.data": "Value", - "admin.resource.type": "Type", - - "admin.reference.reference": "References", - "admin.reference.name": "Name", - "admin.reference.typename": "Type", - "admin.reference.statename": "Status", - "admin.reference.description": "Description", - "admin.reference.vendor": "Manufacturer", - "admin.reference.agent": "Agent", - "admin.reference.currency": "Currency", - "admin.reference.version": "Version", - "admin.reference.calendar": "Calendar", - "admin.reference.category": "Category", - "admin.reference.measure": "Measure", - "admin.reference.mode": "Mode", - "admin.reference.network": "Network", - - "admin.workflow.workflow": "Objects and classes", - "admin.workflow.btn.add": "Add", - "admin.workflow.btn.delete": "Remove", - "admin.workflow.tab.edit": "Edit", - "admin.workflow.tab.workflow": "Workflow", - "admin.workflow.tab.types": "Types", - "admin.workflow.tab.security": "Security", - "admin.workflow.edit.label": "Name", - "admin.workflow.edit.code": "Code", - "admin.workflow.edit.parent": "Parent", - "admin.workflow.edit.entity": "Object", - "admin.workflow.edit.abstract": "Abstract", - "admin.workflow.types.code": "Code", - "admin.workflow.types.name": "Name", - "admin.workflow.types.description": "Description", - "admin.workflow.security.disallow": "Deny", - "admin.workflow.security.allow": "Allow", - "admin.workflow.security.access": "Access", - "admin.workflow.security.create": "Create", - "admin.workflow.security.select": "Select", - "admin.workflow.security.update": "Update", - "admin.workflow.security.delete": "Delete", - "admin.workflow.security.execute": "Execute", - "admin.workflow.security.visible": "Visible", - "admin.workflow.security.enable": "Enabled", - "admin.workflow.security.recuresive": "Save recursive", - "admin.workflow.security.objectset": "Apply to existing objects", - "admin.workflow.security.name": "Name", - "admin.workflow.security.description": "Description", - "admin.workflow.security.save.success": "Succesfully changed", - "admin.workflow.security.save.fail": "Unable to change", - "admin.workflow.constructor.states": "States", - "admin.workflow.constructor.states.typecode": "Type code", - "admin.workflow.constructor.states.typename": "Type", - "admin.workflow.constructor.states.code": "Code", - "admin.workflow.constructor.states.label": "Name", - "admin.workflow.constructor.states.sequence": "Order", - "admin.workflow.constructor.states.type": "Type", - "admin.workflow.constructor.methods": "Methods", - "admin.workflow.constructor.methods.actioncode": "Action code", - "admin.workflow.constructor.methods.actionname": "Action name", - "admin.workflow.constructor.methods.code": "Code", - "admin.workflow.constructor.methods.label": "Name", - "admin.workflow.constructor.methods.action": "Action", - "admin.workflow.constructor.methods.sequence": "Order", - "admin.workflow.constructor.transitions": "Transitions", - "admin.workflow.constructor.transitions.state": "State", - "admin.workflow.constructor.transitions.operation": "Operation", - "admin.workflow.constructor.transitions.newstate": "New state", - "admin.workflow.constructor.events": "Events", - "admin.workflow.constructor.events.type": "Type", - "admin.workflow.constructor.events.action": "Action", - "admin.workflow.constructor.events.label": "Name", - "admin.workflow.constructor.events.sequence": "Order", - "admin.workflow.constructor.events.text": "Procedure", - "admin.workflow.constructor.events.enabled": "Enabled", - - "admin.dashboard.dashboard": "Admin panel", - "admin.dashboard.sessions.sessions": "Sessions", - "admin.dashboard.sessions.created": "Created", - "admin.dashboard.sessions.host": "Host", - "admin.dashboard.sessions.username": "User", - "admin.dashboard.sessions.status": "Status", - "admin.dashboard.eventchart.title": "Events structure", - "admin.dashboard.eventchart.type": "Type", - "admin.dashboard.eventchart.qty": "Qty", - "admin.dashboard.eventchart.message": "Message", - "admin.dashboard.eventchart.notify": "Notice", - "admin.dashboard.eventchart.error": "Error", - "admin.dashboard.eventchart.link": "Show all", - - "usergrouppicker.name": "Name", - "usergrouppicker.description": "Description", - - "DataTablePeriod.search": "ОК", - "DataTablePeriod.reset": "Clear", - "DataTableSearch.search": "ОК", - "DataTableSearch.reset": "Clear", - "DataTableSearch.placeholder": "Search...", - - "extraPages.404Msg": "Sorry, page not found", - "extraPages.500Msg": "Unexpected error", - }; - \ No newline at end of file +window.appMessages["en-US"] = { + "submit": "Submit", + "save": "Save", + "proceed": "Proceed", + "change": "Change", + "edit": "Edit", + "copied": "Copied to the clipboard", + "copy": "Copy to clipboard", + "save.success": "Changes has been saved", + "save.fail": "Unable to save changes", + "delete": "Delete", + "delete.success": "Deleted succesfully", + "delete.fail": "Unable to delete", + "delete.sure": "Confirm delete?", + "kb": "Kb", + "file.size.exceed": "Max file size exceeded", + "file.read.failed": "Error while reading file", + "cancell": "Cancell", + "yes": "Yes", + "no": "No", + "nothing.found": "Nothing found", + "unknown.error": "Unknown error", + "close": "Close", + "method.success": "Action completed", + "method.fail": "Unable to complete this action", + "method.confirm.title": "Action confirm", + "method.confirm.text": "This action could not been undone", + + "signup.signup": "Sign Up", + "signup.text": "Please Sing up to get an access to whole system functionality", + "signup.address": "BTC Address", + "signup.address.invalid": "Provide BTC Adress", + "signup.email": "Email", + "signup.email.invalid": "Incorrect email", + "signup.password": "Password", + "signup.password.invalid": "Set the password", + "signup.password.confirm": "Confirm password", + "signup.password.confirm.empty": "Confirm the password", + "signup.password.confirm.invalid": "Password don't match the confirmation", + "signup.forgot": "Forgot password?", + "signup.or": "or", + "signup.signin": "Sign in", + "signup.iaccept": "I accept", + "signup.mainpage": "Back to mainpage", + "signup.terms": "terms and conditions", + "signup.iaccept.invalid": "You have to accept terms and conditions", + "signup.success": "You have successfully registered.", + "signup.responce": "Server responce", + "signup.additional": "Additional info", + "signup.key": "BTC Key", + "signup.pgp": "PGP Key", + "signup.bitmessage": "Bitmessages", + "signup.unsecure": "* Not secure", + + "signin.signin": "Sing In", + "signin.text": "Please authorize to get an access to restricted sections", + "signin.identity": "Login", + "signin.identity.invalid": "Login is required", + "signin.password": "Password", + "signin.password.invalid": "Password is required", + "signin.or": "or", + "signin.signup": "Sign Up", + "signin.forgot": "Forget password?", + "signin.google": "Login with Google", + "signin.by.login": "By password", + "signin.by.secret": "By secret key", + "signin.by.signature": "By bitcoin signature", + "signin.secret": "Secret key", + "signin.signthis": "Sign this text using bitcoin public key", + "signin.bitadress": "Bitcoin address", + "signin.signed": "Signed string", + "signin.timer.remain": "String validity remaining", + "signin.timer.end": "String is outdated", + "signin.timer.refresh": "Generate new", + "signin.rqrd": "This field is required", + "signin.bysig.unavailable": "Authorization by signature is unavailable", + "signin.responce": "Server responce", + + "recovery.recovery": "Recover password", + "recovery.text": "Provide your bitmessage or email address to recover your password.", + "recovery.email": "Email", + "recovery.identifier": "Bitmessage или Email", + "recovery.email.invalid": "Incorrect email", + "recovery.proceed": "Proceed", + "recovery.or": "or", + "recovery.signin": "Sign in", + "recovery.proceedSuccess": "Instructions to recover your password were sent to you.", + "recovery.resetSuccess": "Password successfully changed.", + "recovery.password": "New password", + "recovery.password.invalid": "Provide new password", + + "userprofile.logout": "Log out", + "userprofile.login": "Sign In", + "userprofile.private": "Account data", + "userprofile.dark": "Dark theme", + "userprofile.profile": "Change profile", + "userprofile.deals": "Deals", + "userprofile.active": "Active", + "userprofile.admin": "Admin", + "userprofile.admin.link": "Admin panel", + "userprofile.guest": "Guest", + "userprofile.email": "Email (not secure)", + "userprofile.email.invalid": "Incorrect email", + "userprofile.passchange": "Change password", + "userprofile.oldpass": "Current password or secret code", + "userprofile.newpass": "New password", + "userprofile.name": "Name", + "userprofile.name.invalid": "This field is required", + "userprofile.avatar.change": "Upload photo", + "userprofile.avatar.remove": "Remove current", + "userprofile.connection": "Connection link", + "userprofile.copied": "Link now in a clipboard", + "userprofile.payload": "Server responce", + "userprofile.responce": "Server responce", + "userprofile.accountdata": "Account data", + "userprofile.accountdata.key": "BTC public key", + "userprofile.key": "BTC public key", + "userprofile.accountdata.pgp": "PGP public key", + "userprofile.pgp": "PGP public key", + "userprofile.accountdata.url": "List URL", + "userprofile.url": "List URL (new on each line)", + "userprofile.accountdata.bitmessage": "Bitmessages", + "userprofile.bitmessage": "Bitmessages", + + "signmodal.copied":"Text now in the clipboard", + "signmodal.title":"You have to sign the request", + "signmodal.signature":"Signature", + + "deals.statename":"State", + "deals.typename":"Type", + "deals.date":"Date", + "deals.sellercode":"Seller", + "deals.customercode":"Customer", + "deals.paymentcode":"Payment", + "deals.sum":"Amount", + "deals.leavebefore":"Before", + "deals.statustext":"Feedback", + "deals.comments":"Feedback text", + "deals.refund":"Refund", + "deals.fee":"Fee", + "deals.info":"Deal Info", + "deals.leave.feedback":"Leave feedback", + "deals.text":"Feedback text", + "deals.responce":"Server responce", + "deals.download":"Get as CSV", + "deals.cancell":"Cancell deal", + "deals.cancell.text":"Cancellation comments", + + "dm.dm":"Deal Module", + "dm.tab.info":"Account info", + "dm.tab.create":"Create deal", + "dm.tab.manage":"Check & Manage deal", + "dm.create.title":"Create deal", + "dm.create.type":"Type", + "dm.create.seller_address":"Seller address", + "dm.create.customer_address":"Customer address", + "dm.create.payment_sum":"Payment sum", + "dm.create.at":"Create at", + "dm.create.date":"Deal date", + "dm.create.leaveBefore":"Leave feedback before", + "dm.create.until":"Pay until", + "dm.create.btn.extra":"Show extra parameters...", + "dm.codeinput.show":"Show deal", + "dm.codeinput.code":"Payment address", + "dm.codeinput.title":"Check & Manage deal", + "dm.deal.status.error":"Unable to get any info about specified deal", + "dm.deal.refresh":"Try again", + "dm.deal.responce.original":"Original server's responce", + "dm.deal.deal":"Deal information", + "dm.deal.at":"At", + "dm.deal.date":"Date", + "dm.deal.type":"Type", + "dm.deal.code":"Code", + "dm.deal.customer":"Customer", + "dm.deal.seller":"Seller", + "dm.deal.payment":"Payment", + "dm.deal.sum":"Sum", + "dm.account.status.error":"Unable to get account info", + "dm.account.responce.original":"Original server's responce", + "dm.account.info":"Account details", + "dm.account.address":"Bitcoin adress", + "dm.account.bitmessages":"Bitmessages", + "dm.account.btckey":"BTC Key", + "dm.account.pgpkey":"PGP Key", + "dm.account.positive":"Positive feedback count", + "dm.account.total":"Total feedback count", + "dm.account.seller":"Seller rating", + "dm.account.customer":"Customer rating", + "dm.account.registered":"Register date", + "dm.accountinput.title":"Account info", + "dm.accountinput.id":"Account address", + "dm.accountinput.show":"Show info", + "dm.deal.complete.feedback":"Feedback", + "dm.deal.complete.toSeller":"To Seller (%)", + "dm.deal.complete.toCustomer":"To Customer (%)", + "dm.deal.complete.btn.complete":"Complete deal", + "dm.feedback.date":"Date", + "dm.feedback.statustext":"Feedback", + + + "private.dash.dash":"Account data", + "private.dash.urlaccount":"Account URL", + "private.dash.urltrusted":"Trusted URL", + "private.dash.docs":"Links", + "private.dash.account.data":"Account data", + "private.dash.address":"Bitcoin address", + "private.dash.bitmessages":"Bitmessage address", + "private.dash.btckey":"Bitcoin key", + "private.dash.pgpkey":"PGP key", + "private.dash.edit":"Change data", + "private.dash.email":"E-mail", + + "private.deals.deals":"Deals", + "private.deals.tab.arbitrator":"Arbitrator", + "private.deals.tab.seller":"Seller", + "private.deals.tab.customer":"Customer", + + "rating.rating":"Rating", + "rating.followers":"Trusted by", + "rating.regdate":"Register date", + "rating.feedback":"Feedback", + + "confirm.confirm": "Confirm email", + "confirm.text": "Confiramtion code was sent to your email.", + "confirm.success": "Your email successfully confirmed.", + "confirm.nowucan": "Now you can", + "confirm.signin": "Sign In", + "confirm.code": "Confirmation code", + "confirm.code.invalid": "Confirmation code is required", + "confirm.proceed": "Proceed", + + "icons.search": "Search", + "icons.notifications": "Notifications", + "icons.admin": "Admin", + + "menu.index": "BitDeals", + "menu.about": "About", + "menu.manual": "Manual", + "menu.faq": "FAQ", + "menu.terms": "Terms", + "menu.admin.journals": "Journals", + "menu.admin.groups": "Users", + "menu.admin.tools": "Tools", + "menu.admin.settings": "Settings", + + "menu.private.index":"BitDeals", + "menu.private.profile":"Profile", + "menu.private.seller":"Seller", + "menu.private.customer":"Customer", + "menu.private.arbitrator":"Arbitrator", + + "search.placeholder": "Search...", + "search.search": "Search", + "search.results": "Search results", + + "admin.apilog.apilog": "API query log", + "admin.apilog.datetime": "Date, time", + "admin.apilog.username": "User", + "admin.apilog.path": "Path", + + "admin.dblog.dblog": "Event log", + "admin.dblog.datetime": "Date, time", + "admin.dblog.username": "User", + "admin.dblog.type": "Type", + "admin.dblog.session": "Session", + "admin.dblog.code": "Code", + "admin.dblog.event": "Event", + "admin.dblog.text": "Text", + + "admin.groups.groups": "Groups", + "admin.groups.btn.add": "Add group", + "admin.groups.btn.delete": "Remove group", + "admin.groups.system": "System group", + "admin.groups.name": "Name", + "admin.groups.username": "Code", + "admin.groups.description": "Description", + + "admin.users.users": "Users", + "admin.users.btn.block": "Block user", + "admin.users.btn.delete": "Remove user", + "admin.users.name": "Name", + "admin.users.username": "Login", + "admin.users.email": "E-mail", + "admin.users.password": "Set password", + "admin.users.created": "Created", + "admin.users.statustext": "State", + "admin.users.phone": "Phone", + "admin.users.description": "Description", + "admin.users.passwordchange": "Have to change password", + "admin.users.passwordnotchange": "Don't change password", + "admin.users.title.name": "Name", + "admin.users.title.created": "Created", + "admin.users.title.input_last": "Last activity", + "admin.users.tab.profile": "Profile", + "admin.users.tab.groups": "Groups", + "admin.users.tab.ip": "IP Addresses", + "admin.users.iptable.allowed": "Allowed", + "admin.users.iptable.denied": "Denied", + "admin.users.iptable.none": "No IP addreses", + "admin.users.iptable.prompt": "Input IP address", + "admin.users.tab.interfaces": "Interfaces", + + "admin.registry.registry": "Registry", + "admin.registry.btn.add": "Add parameter", + "admin.registry.btn.delete": "Remove branch", + "admin.registry.key": "Key", + "admin.registry.subkey": "Subkey (path)", + "admin.registry.name": "Name", + "admin.registry.type": "Type", + "admin.registry.integer": "Integer", + "admin.registry.number": "Number", + "admin.registry.datetime": "Date and time", + "admin.registry.string": "String", + "admin.registry.boolean": "Yes / No", + "admin.registry.data": "Value", + "admin.registry.valuename": "Name", + "admin.registry.value": "Value", + + "admin.console.console": "API Console", + "admin.console.query": "Path", + "admin.console.params": "Parameters", + "admin.console.submit": "Query", + "admin.console.object": "As a object", + "admin.console.table": "As a table", + + "admin.resource.resource": "Resources", + "admin.resource.btn.add": "Add", + "admin.resource.btn.delete": "Delete", + "admin.resource.node": "Node", + "admin.resource.name": "Name", + "admin.resource.description": "Description", + "admin.resource.data": "Value", + "admin.resource.type": "Type", + + "admin.reference.reference": "References", + "admin.reference.name": "Name", + "admin.reference.typename": "Type", + "admin.reference.statename": "Status", + "admin.reference.description": "Description", + "admin.reference.vendor": "Manufacturer", + "admin.reference.agent": "Agent", + "admin.reference.currency": "Currency", + "admin.reference.version": "Version", + "admin.reference.calendar": "Calendar", + "admin.reference.category": "Category", + "admin.reference.measure": "Measure", + "admin.reference.mode": "Mode", + "admin.reference.network": "Network", + + "admin.workflow.workflow": "Objects and classes", + "admin.workflow.btn.add": "Add", + "admin.workflow.btn.delete": "Remove", + "admin.workflow.tab.edit": "Edit", + "admin.workflow.tab.workflow": "Workflow", + "admin.workflow.tab.types": "Types", + "admin.workflow.tab.security": "Security", + "admin.workflow.edit.label": "Name", + "admin.workflow.edit.code": "Code", + "admin.workflow.edit.parent": "Parent", + "admin.workflow.edit.entity": "Object", + "admin.workflow.edit.abstract": "Abstract", + "admin.workflow.types.code": "Code", + "admin.workflow.types.name": "Name", + "admin.workflow.types.description": "Description", + "admin.workflow.security.disallow": "Deny", + "admin.workflow.security.allow": "Allow", + "admin.workflow.security.access": "Access", + "admin.workflow.security.create": "Create", + "admin.workflow.security.select": "Select", + "admin.workflow.security.update": "Update", + "admin.workflow.security.delete": "Delete", + "admin.workflow.security.execute": "Execute", + "admin.workflow.security.visible": "Visible", + "admin.workflow.security.enable": "Enabled", + "admin.workflow.security.recuresive": "Save recursive", + "admin.workflow.security.objectset": "Apply to existing objects", + "admin.workflow.security.name": "Name", + "admin.workflow.security.description": "Description", + "admin.workflow.security.save.success": "Succesfully changed", + "admin.workflow.security.save.fail": "Unable to change", + "admin.workflow.constructor.states": "States", + "admin.workflow.constructor.states.typecode": "Type code", + "admin.workflow.constructor.states.typename": "Type", + "admin.workflow.constructor.states.code": "Code", + "admin.workflow.constructor.states.label": "Name", + "admin.workflow.constructor.states.sequence": "Order", + "admin.workflow.constructor.states.type": "Type", + "admin.workflow.constructor.methods": "Methods", + "admin.workflow.constructor.methods.actioncode": "Action code", + "admin.workflow.constructor.methods.actionname": "Action name", + "admin.workflow.constructor.methods.code": "Code", + "admin.workflow.constructor.methods.label": "Name", + "admin.workflow.constructor.methods.action": "Action", + "admin.workflow.constructor.methods.sequence": "Order", + "admin.workflow.constructor.transitions": "Transitions", + "admin.workflow.constructor.transitions.state": "State", + "admin.workflow.constructor.transitions.operation": "Operation", + "admin.workflow.constructor.transitions.newstate": "New state", + "admin.workflow.constructor.events": "Events", + "admin.workflow.constructor.events.type": "Type", + "admin.workflow.constructor.events.action": "Action", + "admin.workflow.constructor.events.label": "Name", + "admin.workflow.constructor.events.sequence": "Order", + "admin.workflow.constructor.events.text": "Procedure", + "admin.workflow.constructor.events.enabled": "Enabled", + + "admin.dashboard.dashboard": "Admin panel", + "admin.dashboard.sessions.sessions": "Sessions", + "admin.dashboard.sessions.created": "Created", + "admin.dashboard.sessions.host": "Host", + "admin.dashboard.sessions.username": "User", + "admin.dashboard.sessions.status": "Status", + "admin.dashboard.eventchart.title": "Events structure", + "admin.dashboard.eventchart.type": "Type", + "admin.dashboard.eventchart.qty": "Qty", + "admin.dashboard.eventchart.message": "Message", + "admin.dashboard.eventchart.notify": "Notice", + "admin.dashboard.eventchart.error": "Error", + "admin.dashboard.eventchart.link": "Show all", + + "usergrouppicker.name": "Name", + "usergrouppicker.description": "Description", + + "DataTablePeriod.search": "ОК", + "DataTablePeriod.reset": "Clear", + "DataTableSearch.search": "ОК", + "DataTableSearch.reset": "Clear", + "DataTableSearch.placeholder": "Search...", + + "extraPages.404Msg": "Sorry, page not found", + "extraPages.500Msg": "Unexpected error", + }; + diff --git a/build/content/locale/ru_RU.js b/build/content/locale/ru_RU.js index a3fbe12..539b7e9 100644 --- a/build/content/locale/ru_RU.js +++ b/build/content/locale/ru_RU.js @@ -201,7 +201,7 @@ window.appMessages["ru-RU"] = { "private.dash.dash":"Данные аккаунта", "private.dash.urlaccount":"URL Аккаунта", "private.dash.urltrusted":"Доверенные URL", - "private.dash.docs":"Документация", + "private.dash.docs":"Ссылки", "private.dash.account.data":"Данные аккаунта", "private.dash.address":"Bitcoin адрес", "private.dash.bitmessages":"Bitmessage адрес", diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d6716e1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + nginx: + build: + context: https://git.bitdeals.org/private/web-build.git + dockerfile: ./docker/Dockerfile + image: registry.bitdeals.org:5000/web-build + environment: + - BD_FORWEB=http://127.0.0.1:80 + - BD_WEB_LANG=en + expose: + - "80" + diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..24c7b9a --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,50 @@ +## syntax=docker/dockerfile:3 + +FROM bitnami/nginx:1.22-debian-11 + +SHELL ["/bin/bash", "-eux", "-c"] + +LABEL name="BitDeals WebUI" +EXPOSE 80/tcp + +## Debian update; install dependencies +ARG DEBIAN_FRONTEND=noninteractive \ + DEBCONF_NOWARNINGS="yes" + +USER root + +RUN apt-get update -y ; \ + apt-get upgrade -y ; \ + apt-get -y install --no-install-recommends locales tzdata moreutils ; \ + apt-get clean ; \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY --chown=www-data:www-data ./build . +COPY ./docker/nginx.conf /opt/bitnami/nginx/conf/server_blocks/nginx.conf + +ENV WEB_CONF_FILE="/app/config.js" +ENV BD_FORWEB="http://127.0.0.1:80" +ENV BD_WEB_LANG="en" + +SHELL ["/bin/bash", "-eu", "-c"] + +# Change default variables in config file +RUN sed -i -e "/creditsText:/ s/20../$(date +%Y)/" \ + -e 's/confAuthorize:.*/confAuthorize: true,/' \ + -e 's/dmHost:.*/dmHost: "http:\/\/0.0.0.0:4999",/' \ + -e 's/confPrivateDash:.*/confPrivateDash: true,/' \ + -e 's/confDealModule:.*/confDealModule: false,/' \ + -e 's/confAdmin:.*/confAdmin: true,/' $WEB_CONF_FILE + +RUN chmod 666 $WEB_CONF_FILE +USER 1001 + +# Confugure BitDeals WebUI +CMD cat $WEB_CONF_FILE | \ + sed -e "s|defaultLanguage:.*|defaultLanguage: \"$BD_WEB_LANG\",|" \ + -e "s|apiTokenUrl:.*|apiTokenUrl: \"$BD_FORWEB/oauth2/token\",|" \ + -e "s|apiDomain:.*|apiDomain: \"$BD_FORWEB\",|" \ + -e "s|wsDomain:.*|wsDomain: \"wss://$(basename $BD_FORWEB)\",|" | \ + sponge $WEB_CONF_FILE ;\ + /opt/bitnami/scripts/nginx/run.sh + diff --git a/docker/nginx.conf b/docker/nginx.conf new file mode 100644 index 0000000..3335d8d --- /dev/null +++ b/docker/nginx.conf @@ -0,0 +1,78 @@ +server { + + listen 80 default_server; + listen [::]:80 default_server; + + index index.html; + + server_name _; + + location ^~ /docs/ { + proxy_pass http://bitdeals:4977; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header Connection "close"; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location ^~ /oauth2/ { + proxy_pass http://bitdeals:4977; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header Connection "close"; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location ^~ /oauth/ { + proxy_pass http://bitdeals:4977; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header Connection "close"; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location ^~ /api/ { + proxy_pass http://bitdeals:4977; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header Connection "close"; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location ^~ /ws/ { + proxy_pass http://bitdeals:4977; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header Connection "close"; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location ^~ /session/ { + proxy_pass http://bitdeals:4977; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + } + + location / { + root /app; + index index.html; + try_files $uri $uri/ /index.html; + } + +}