рдореЗрд░реЗ рдкрд╛рд╕ рдИрдкреАрдПрд▓ рдХреА рдПрдХ рддрд╛рдЬрд╛ рдФрд░ рд╕рд╛рдл рд╕реНрдерд╛рдкрдирд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреГрд╖реНрда рдкрд░ рд▓реЙрдЧрд┐рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрд╣ рдмрд╛рд░-рдмрд╛рд░ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдореИрдВ рдиреЛ рдСрде рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рд╕рдВрд╕реНрдХрд░рдг: 1.8.0рдмреАрдЯрд╛
рд╕реЗрдЯрд┐рдВрдЧреНрд╕.conf
{
"users": {
"admin": {
"is_admin": true,
"password": ****
}
},
"skinName": "colibris",
"ip": "127.0.0.1",
"port": 9001,
"showSettingsInAdminPage": true,
"dbType" : "mysql",
"dbSettings" : {
"user": ****,
"host": "localhost",
"port": 3306,
"password": ****,
"database": "etherpad_lite_db",
"charset": "utf8mb4"
},
"suppressErrorsInPadText": false,
"requireSession": false,
"editOnly": false,
"sessionNoPassword": false,
"minify": true,
"maxAge": 21600, // 60 * 60 * 6 = 6 hours
"abiword": "/usr/bin/abiword",
"soffice": null,
"tidyHtml": "/usr/bin/tidy",
"allowUnknownFileEnds": true,
"requireAuthentication": false,
"requireAuthorization": false,
"trustProxy": false,
"disableIPlogging": true,
"automaticReconnectionTimeout": 0,
"socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
"loadTest": false,
"exposeVersion": false,
"loglevel": "INFO",
[...]
}
рдореИрдВрдиреЗ рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХреА рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдИ рд╡рд┐рд╖рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХреЛрдИ рдЙрдкрд╛рдп?
-- рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
1.7.5 рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд╣рд╛рдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдиреБрднрд╛рдЧ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИред
рдирдорд╕реНрддреЗ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдирдпрд╛ рд╣реИред
рдХреЛрдИ рд╕реБрдЭрд╛рд╡? рд▓реЙрдЧ рдХреЛрдИ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛:
рдпрд╣ рдХреЗрд╡рд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕.рдЬреЗрд╕рди рдореЗрдВ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд╣реИ рдирд╛?
"users": {
"admin": {
"is_admin": true,
"password": ****
}
}
-- рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
1.7.5 рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд╣рд╛рдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдиреБрднрд╛рдЧ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИред
рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рдпрджрд┐ 1.7.5 рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреЛрджрдиреЗ рд▓рд╛рдпрдХ рд╣реИред
рдФрд░ рдпрд╣рд╛рдБ рд╣рдо рд╣реИрдВ: рдпрд╣ 7c099fef5e08 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рд╣реИред
рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг (4e758a9f4a50):
git checkout 4e758a9f4a50
node <base>/node_modules/ep_etherpad-lite/node/server.js
curl --silent --output /dev/null --write-out "HTTP/%{http_code}\n" --basic --user admin:password http://localhost:9001/admin/
HTTP/200
рдкреНрд░рддрд┐рдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг (7c099fef5e08):
git checkout 7c099fef5e08
node <base>/node_modules/ep_etherpad-lite/node/server.js
curl --silent --output /dev/null --write-out "HTTP/%{http_code}\n" --basic --user admin:password http://localhost:9001/admin/
HTTP/401
рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
#3648 (7c099fef5e08) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд▓рдд рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рд╕рдорд╕реНрдпрд╛ рджреБрдЧрдиреА рдереА:
_.filter()
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╕рднреА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред_.pick()
;userProperties.password
рдкрд░ рддрд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдереА (рдЗрд╕реЗ OR рдХреЗ рдмрдЬрд╛рдп AND рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛)редрдЗрд╕ рдмрдЧ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП @g4rf рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
#3648 (7c099fef5e08) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд▓рдд рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рд╕рдорд╕реНрдпрд╛ рджреБрдЧрдиреА рдереА:
_.filter()
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╕рднреА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛редрджреЗрдЦреЗрдВ: https://stackoverflow.com/questions/11697702/how-to-use-underscore-js-filter-with-an-object
рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ
_.pick()
;userProperties.password
рдкрд░ рддрд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдереА (рдЗрд╕реЗ OR рдХреЗ рдмрдЬрд╛рдп AND рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛)редрдЗрд╕ рдмрдЧ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП @g4rf рдзрдиреНрдпрд╡рд╛рджред