Documentation
¶
Index ¶
- Constants
- Variables
- func AppendQueryParamsToURL(baseURL string, params map[string]string) string
- func CheckOrigin(r *http.Request, allowedOrigins string) bool
- func CompileGo(t *testing.T, sourceCode, outputPath string)
- func CompileGoTest(t *testing.T, sourceCode, outputPath string)
- func CopyDir(src string, dst string) (err error)
- func CopyFile(src, dst string) (err error)
- func CreateTestAnimatedGif(t *testing.T, width int, height int, frames int) []byte
- func CreateTestGif(t *testing.T, width int, height int) []byte
- func CreateTestJpeg(t *testing.T, width int, height int) []byte
- func CreateTestPng(t *testing.T, width int, height int) []byte
- func DisableDebugLogForTest()
- func EnableDebugLogForTest()
- func EndOfDay(t time.Time) time.Time
- func FuzzName() string
- func FuzzPost() string
- func GetAndValidateLicenseFileFromDisk(location string) (*model.License, []byte)
- func GetClientLicense(l *model.License) map[string]string
- func GetHostnameFromSiteURL(siteURL string) string
- func GetIPAddress(r *http.Request, trustedProxyIPHeader []string) string
- func GetLicenseFileFromDisk(fileName string) []byte
- func GetLicenseFileLocation(fileLocation string) string
- func GetLogFileLocation(fileLocation string) string
- func GetLogSettingsFromNotificationsLogSettings(notificationLogSettings *model.NotificationLogSettings) *model.LogSettings
- func GetNotificationsLogFileLocation(fileLocation string) string
- func GetSanitizedClientLicense(l map[string]string) map[string]string
- func GetSubpathFromConfig(config *model.Config) (string, error)
- func GetSubpathScriptHash(subpath string) string
- func GetURLWithCache(url string, cache *RequestCache, skip bool) ([]byte, error)
- func HashSha256(text string) string
- func IsValidMobileAuthRedirectURL(config *model.Config, redirectURL string) bool
- func IsValidWebAuthRedirectURL(config *model.Config, redirectURL string) bool
- func Merge(base interface{}, patch interface{}, mergeConfig *MergeConfig) (interface{}, error)
- func MillisFromTime(t time.Time) int64
- func MloggerConfigFromLoggerConfig(s *model.LogSettings, getFileFunc fileLocationFunc) *mlog.LoggerConfiguration
- func OriginChecker(allowedOrigins string) func(*http.Request) bool
- func ProgressiveRetry(operation func() error) error
- func RandIntFromRange(r Range) int
- func RandString(l int, charset string) string
- func RandomName(length Range, charset string) string
- func RandomText(length Range, hashtags Range, mentions Range, users []string) string
- func RemoveDuplicatesFromStringArray(arr []string) []string
- func RemoveStringFromSlice(a string, slice []string) []string
- func RemoveStringsFromSlice(slice []string, strings ...string) []string
- func RenderMobileAuthComplete(w http.ResponseWriter, redirectURL string)
- func RenderMobileError(config *model.Config, w http.ResponseWriter, err *model.AppError, ...)
- func RenderMobileMessage(w http.ResponseWriter, message string)
- func RenderWebAppError(config *model.Config, w http.ResponseWriter, r *http.Request, ...)
- func RenderWebError(config *model.Config, w http.ResponseWriter, r *http.Request, status int, ...)
- func SetRolePermissionsFromConfig(roles map[string]*model.Role, cfg *model.Config, isLicensed bool) map[string]*model.Role
- func StartOfDay(t time.Time) time.Time
- func StringArrayIntersection(arr1, arr2 []string) []string
- func StringInSlice(a string, slice []string) bool
- func StringSliceDiff(a, b []string) []string
- func StripMarkdown(markdown string) (string, error)
- func TimeFromMillis(millis int64) time.Time
- func TranslationsPreInit() error
- func URLEncode(str string) string
- func UnzipToPath(zipFile io.ReaderAt, size int64, outPath string) ([]string, error)
- func UpdateAssetsSubpath(subpath string) error
- func UpdateAssetsSubpathFromConfig(config *model.Config) error
- func UpdateAssetsSubpathInDir(subpath, directory string) error
- func Yesterday() time.Time
- type LicenseValidatorIface
- type LicenseValidatorImpl
- type MergeConfig
- type Range
- type RequestCache
- type StructFieldFilter
Constants ¶
const ( LogRotateSize = 10000 LogFilename = "mattermost.log" LogNotificationFilename = "notifications.log" )
const ( ALPHANUMERIC = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890" LOWERCASE = "abcdefghijklmnopqrstuvwxyz" )
const GibberishText = `` /* 9064-byte string literal not displayed */
Lovely giberish for all to use
Variables ¶
var FuzzyStringsEmails = []string{ "sue@thatmightbe", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", }
Strings that should pass as acceptable emails
var FuzzyStringsNames = []string{ "*", "?", ".", "}{][)(><", "{}[]()<>", "qahwah ( قهوة)", "שָׁלוֹם עֲלֵיכֶם", "Ramen チャーシュー chāshū", "言而无信", "Ṫ͌ó̍ ̍͂̓̍̍̀i̊ͯ͒", "& < &qu", "' or '1'='1' -- ", "' or '1'='1' ({ ", "' or '1'='1' /* ", "1;DROP TABLE users", "<b><i><u><strong><em>", "sue@thatmightbe", "sue@thatmightbe.", "[email protected]", "[email protected]", "sue @ thatmightbe.com", "apos'[email protected]", "apos''''[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "tom(comment)@thatmightbe.com", "(comment)[email protected]", "\"quotes\"@thatmightbe.com", "\"\\\"(),:;<>@[\\]\"@thatmightbe.com", "a!#$%&'*+-/=?^_`{|}[email protected]", "local@[127.0.0.1]", "jill@(comment)example.com", "[email protected](comment)", "a@b.中国", "[email protected]", "[email protected]", "[email protected]", "<a href=\"//www.google.com\">Teh Googles</a>", "<img src=\"//upload.wikimedia.org/wikipelogo-v2_2x.png\" />", "<b><i><u><strong><em>", "& < " '", ";alert('Well this is awkward.');", "<script type='text/javascript'>alert('yay puppies');</script>", "Ṫ͌ó̍ ̍͂̓̍̍̀i̊ͯ͒nͧ̍̓̃͋v", "H҉̵̞̟̠̖̗̘Ȅ̐̐̑̒̚OMI҉̵̞̟̠", }
Strings that should pass as acceptable team names
var FuzzyStringsPosts = []string{ `**[1] - [Markdown Tests]** _italics_ more _italics_ **bold** more **bold** **_bold-italic_** more **_bold-italic_*8 ~~strikethrough~~ more ~~strikethrough~~ ` + "```" + ` multi-line code block<enter here> multi-line code block emoji that should not render in code block: :ice_cream: ` + "```" + ` ` + "`monospace`" + ` [Link to Mattermost](www.mattermost.com) Inline Image with link, alt text, and hover text: ](https://travis-ci.org/mattermost/mattermost-server) Three types of lines: *** ___ --- `, ` **[2] - **[More Markdown Tests]** > i am a blockquote! > i am a 2nd multiline > quote. i am text right after a multiline quote, but not in the quote * list item * another list item * indented list item 1. numbered list, item number 1 2. item number two `, ` **[3]** - **[More Markdown Tests]** Table | Left-Aligned | Center Aligned | Right Aligned | | :------------ |:---------------:| -----:| | Left column 1 | this text | $100 | | Left column 2 | is | $10 | | Left column 3 | centered | $1 | Ugly table Markdown | Less | Pretty --- | --- | --- *Still* | ~~renders~~ | **nicely** 1 | 2 | 3 # Large heading ## Smaller heading ### Even smaller heading # Large heading ## Smaller heading ### Even smaller heading `, ` **[4]** - **[More Markdown Tests]** # This is a heading I am a multiline text. #### I am a level four heading ` + "```tex" + ` f(x) = \int_{-\infty}^\infty \hat f(\xi)\,e^{2 \pi i \xi x} \,d\xi ` + "```" + ` * This was some tex code* `, `**[5]** - **[Markdown and automatic preview of content test]** ## This should display a preview for the given vine url Some text *before* the link And a smiley :) https://vine.co/v/eDeVgbFrt9L Some more text here and here and even more here `, `**[6]** - **[More markdown and automatic preview of content test]** ## Only the first given url should render an "attachment" Lets also add a table here, because why not | Left-Aligned | Center Aligned | Right Aligned | | :------------ |:---------------:| -----:| | Left column 1 | this text | $100 | | Left column 2 | is | $10 | | Left column 3 | centered | $1 | Wiki should render: http://en.wikipedia.org/wiki/Foo https://vine.co/v/eDeVgbFrt9L `, `**[7] [Image Test]** ## this *should* display an image http://37.media.tumblr.com/tumblr_mavsumGGAd1qboaw8o1_500.jpg `, `**[8] [Emoji Display Test 1]** :+1: :-1: :100: :1234: :8ball: :a: :ab: :abc: :abcd: :accept: :aerial_tramway: :airplane: :alarm_clock: :ambulance: :anchor: :angel: :anger: :angry: :anguished: :ant: :apple: :aquarius: :aries: :arrow_backward: :arrow_double_down: :arrow_double_up: :arrow_down: :arrow_down_small: :arrow_forward: :arrow_heading_down: :arrow_heading_up: :arrow_left: :arrow_lower_left: :arrow_lower_right: :arrow_right: :arrow_right_hook: :arrow_up: :arrow_up_down: :arrow_upper_left: :arrow_upper_right: :arrows_clockwise: :arrows_counterclockwise: :art: :articulated_lorry: :astonished: :atm: :arrow_up_small: :b: :baby: :baby_bottle: :baby_chick: :baby_symbol: :back: :baggage_claim: :balloon: :ballot_box_with_check: :bamboo: :banana: :bangbang: :bank: :bar_chart: :barber: :baseball: :basketball: :bath: :bathtub: :battery: :bear: :bee: :beer: :beers: :beetle: :beginner: :bell: :bento: :bicyclist: :bike: :bikini: :bird: :birthday: :black_circle: :black_joker: :black_medium_small_square: :black_medium_square: :black_nib: :black_small_square: :black_square: :black_square_button: :blossom: :blowfish: :blue_book: :blue_car: :blue_heart: :blush: :boar: :boat: :bomb: :book: :bookmark: :bookmark_tabs: :books: :boom: :boot: :bouquet: :bow: :bowling: :bowtie: :boy: :bread: :bride_with_veil: :bridge_at_night: :briefcase: :broken_heart: :bug: :bulb: :bullettrain_front: :bullettrain_side: :bus: :busstop: :bust_in_silhouette: :busts_in_silhouette: :cactus: :cake: :calendar: :calling: :camel: :camera: :cancer: :candy: :capital_abcd: :capricorn: :car: :card_index: :carousel_horse: :cat: :cat2: :cd: :chart: :chart_with_downwards_trend: :chart_with_upwards_trend: :checkered_flag: :cherries: :cherry_blossom: :chestnut: :chicken: :children_crossing: :chocolate_bar: :christmas_tree: :church: :cinema: :circus_tent: :city_sunrise: :city_sunset: :cl: :clap: :clapper: :clipboard: :clock1: :clock10: :clock1030: :clock11: :clock1130: :clock12: :clock1230: :clock130: :clock2: :clock230: :clock3: :clock330: :clock4: :clock430: :clock5: :clock530: :clock6: :clock630: :clock7: :clock730: :clock8: :clock830: :clock9: :clock930: :closed_book: :closed_lock_with_key: :closed_umbrella: :cloud: :clubs: :cn: :cocktail: :coffee: :cold_sweat: :collision: :computer: :confetti_ball: :confounded: :confused: :congratulations: :construction: :construction_worker: :convenience_store: :cookie: :cool: :cop: :copyright: :corn: :couple: :couple_with_heart: :couplekiss: :cow: :cow2: :credit_card: :crescent_moon: :crocodile: :crossed_flags: :crown: :cry: :crying_cat_face: :crystal_ball: :cupid: :curly_loop: :currency_exchange: :curry: :custard: :customs: :cyclone: :dancer: :dancers: :dango: :dart: :dash: :date: :de: :deciduous_tree: :department_store: :diamond_shape_with_a_dot_inside: :diamonds: :disappointed: :disappointed_relieved: :dizzy: :dizzy_face: :do_not_litter: :dog: :dog2: :dollar: :dolls: :dolphin: :donut: :door: :doughnut: :dragon: :dragon_face: :dress: :dromedary_camel: :droplet: :dvd: :e-mail: :ear: :ear_of_rice: :earth_africa: :earth_americas: :earth_asia: :egg: :eggplant: :eight: :eight_pointed_black_star: :eight_spoked_asterisk: :electric_plug: :elephant: :email: :end: :envelope: :es: :euro: :european_castle: :european_post_office: :evergreen_tree: :exclamation: :expressionless: :eyeglasses: :eyes: :facepunch: :factory: :fallen_leaf: :family: :fast_forward: :fax: :fearful: :feelsgood: :feet: :ferris_wheel: :file_folder: :finnadie: :fire: :fire_engine: :fireworks: :first_quarter_moon: :first_quarter_moon_with_face: :fish: :fish_cake: :fishing_pole_and_fish: :fist: :five: :flags: :flashlight: :floppy_disk: :flower_playing_cards: :flushed: :foggy: :football: :fork_and_knife: :fountain: :four: :four_leaf_clover: :fr: :free: :fried_shrimp: :fries: :frog: :frowning: :fu: :fuelpump: :full_moon: :full_moon_with_face: :game_die: :gb: :gem: :gemini: :ghost: :gift:`, `**[9] [Emoji Display Test 2]** :gift_heart: :girl: :globe_with_meridians: :goat: :goberserk: :godmode: :golf: :grapes: :green_apple: :green_book: :green_heart: :grey_exclamation: :grey_question: :grimacing: :grin: :grinning: :guardsman: :guitar: :gun: :haircut: :hamburger: :hammer: :hamster: :hand: :handbag: :hankey: :hash: :hatched_chick: :hatching_chick: :headphones: :hear_no_evil: :heart: :heart_decoration: :heart_eyes: :heart_eyes_cat: :heartbeat: :heartpulse: :hearts: :heavy_check_mark: :heavy_division_sign: :heavy_dollar_sign: :heavy_exclamation_mark: :heavy_minus_sign: :heavy_multiplication_x: :heavy_plus_sign: :helicopter: :herb: :hibiscus: :high_brightness: :high_heel: :hocho: :honey_pot: :honeybee: :horse: :horse_racing: :hospital: :hotel: :hotsprings: :hourglass: :hourglass_flowing_sand: :house: :house_with_garden: :hurtrealbad: :hushed: :ice_cream: :icecream: :id: :ideograph_advantage: :imp: :inbox_tray: :incoming_envelope: :information_desk_person: :information_source: :innocent: :interrobang: :iphone: :it: :izakaya_lantern: :jack_o_lantern: :japan: :japanese_castle: :japanese_goblin: :japanese_ogre: :jeans: :joy: :joy_cat: :jp: :key: :keycap_ten: :kimono: :kiss: :kissing: :kissing_cat: :kissing_closed_eyes: :kissing_face: :kissing_heart: :kissing_smiling_eyes: :koala: :koko: :kr: :large_blue_circle: :large_blue_diamond: :large_orange_diamond: :last_quarter_moon: :last_quarter_moon_with_face: :laughing: :leaves: :ledger: :left_luggage: :left_right_arrow: :leftwards_arrow_with_hook: :lemon: :leo: :leopard: :libra: :light_rail: :link: :lips: :lipstick: :lock: :lock_with_ink_pen: :lollipop: :loop: :loudspeaker: :love_hotel: :love_letter: :low_brightness: :m: :mag: :mag_right: :mahjong: :mailbox: :mailbox_closed: :mailbox_with_mail: :mailbox_with_no_mail: :man: :man_with_gua_pi_mao: :man_with_turban: :mans_shoe: :maple_leaf: :mask: :massage: :meat_on_bone: :mega: :melon: :memo: :mens: :metal: :metro: :microphone: :microscope: :milky_way: :minibus: :minidisc: :mobile_phone_off: :money_with_wings: :moneybag: :monkey: :monkey_face: :monorail: :mortar_board: :mount_fuji: :mountain_bicyclist: :mountain_cableway: :mountain_railway: :mouse: :mouse2: :movie_camera: :moyai: :muscle: :mushroom: :musical_keyboard: :musical_note: :musical_score: :mute: :nail_care: :name_badge: :neckbeard: :necktie: :negative_squared_cross_mark: :neutral_face: :new: :new_moon: :new_moon_with_face: :newspaper: :ng: :nine: :no_bell: :no_bicycles: :no_entry: :no_entry_sign: :no_good: :no_mobile_phones: :no_mouth: :no_pedestrians: :no_smoking: :non-potable_water: :nose: :notebook: :notebook_with_decorative_cover: :notes: :nut_and_bolt: :o: :o2: :ocean: :octocat: :octopus: :oden: :office: :ok: :ok_hand: :ok_woman: :older_man: :older_woman: :on: :oncoming_automobile: :oncoming_bus: :oncoming_police_car: :oncoming_taxi: :one: :open_file_folder: :open_hands: :open_mouth: :ophiuchus: :orange_book: :outbox_tray: :ox: :package: :page_facing_up: :page_with_curl: :pager: :palm_tree: :panda_face: :paperclip: :parking: :part_alternation_mark: :partly_sunny: :passport_control: :paw_prints: :peach: :pear: :pencil: :pencil2: :penguin: :pensive: :performing_arts: :persevere: :person_frowning: :person_with_blond_hair: :person_with_pouting_face: :phone: :pig: :pig2: :pig_nose: :pill: :pineapple: :pisces: :pizza: `, `**[10] [Emoji Display Test 3]** :plus1: :point_down: :point_left: :point_right: :point_up: :point_up_2: :police_car: :poodle: :poop: :post_office: :postal_horn: :postbox: :potable_water: :pouch: :poultry_leg: :pound: :pouting_cat: :pray: :princess: :punch: :purple_heart: :purse: :pushpin: :put_litter_in_its_place: :question: :rabbit: :rabbit2: :racehorse: :radio: :radio_button: :rage: :rage1: :rage2: :rage3: :rage4: :railway_car: :rainbow: :raised_hand: :raised_hands: :raising_hand: :ram: :ramen: :rat: :recycle: :red_car: :red_circle: :registered: :relaxed: :relieved: :repeat: :repeat_one: :restroom: :revolving_hearts: :rewind: :ribbon: :rice: :rice_ball: :rice_cracker: :rice_scene: :ring: :rocket: :roller_coaster: :rooster: :rose: :rotating_light: :round_pushpin: :rowboat: :ru: :rugby_football: :runner: :running: :running_shirt_with_sash: :sa: :sagittarius: :sailboat: :sake: :sandal: :santa: :satellite: :satisfied: :saxophone: :school: :school_satchel: :scissors: :scorpius: :scream: :scream_cat: :scroll: :seat: :secret: :see_no_evil: :seedling: :seven: :shaved_ice: :sheep: :shell: :ship: :shipit: :shirt: :shit: :shoe: :shower: :signal_strength: :six: :six_pointed_star: :ski: :skull: :sleeping: :sleepy: :slot_machine: :small_blue_diamond: :small_orange_diamond: :small_red_triangle: :small_red_triangle_down: :smile: :smile_cat: :smiley: :smiley_cat: :smiling_imp: :smirk: :smirk_cat: :smoking: :snail: :snake: :snowboarder: :snowflake: :snowman: :sob: :soccer: :soon: :sos: :sound: :space_invader: :spades: :spaghetti: :sparkle: :sparkler: :sparkles: :sparkling_heart: :speak_no_evil: :speaker: :speech_balloon: :speedboat: :squirrel: :star: :star2: :stars: :station: :statue_of_liberty: :steam_locomotive: :stew: :straight_ruler: :strawberry: :stuck_out_tongue: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_winking_eye: :sun_with_face: :sunflower: :sunglasses: :sunny: :sunrise: :sunrise_over_mountains: :surfer: :sushi: :suspect: :suspension_railway: :sweat: :sweat_drops: :sweat_smile: :sweet_potato: :swimmer: :symbols: :syringe: :tada: :tanabata_tree: :tangerine: :taurus: :taxi: :tea: :telephone: :telephone_receiver: :telescope: :tennis: :tent: :thought_balloon: :three: :thumbsdown: :thumbsup: :ticket: :tiger: :tiger2: :tired_face: :tm: :toilet: :tokyo_tower: :tomato: :tongue: :top: :tophat: :tractor: :traffic_light: :train: :train2: :tram: :triangular_flag_on_post: :triangular_ruler: :trident: :triumph: :trolleybus: :trollface: :trophy: :tropical_drink: :tropical_fish: :truck: :trumpet: :tshirt: :tulip: :turtle: :tv: :twisted_rightwards_arrows: :two: :two_hearts: :two_men_holding_hands: :two_women_holding_hands: :uk: :umbrella: :unamused: :underage: :unlock: :up: :us: :v: :vertical_traffic_light: :vhs: :vibration_mode: :video_camera: :video_game: :violin: :virgo: :volcano: :vs: :walking: :waning_crescent_moon: :waning_gibbous_moon: :warning: :watch: :water_buffalo: :watermelon: :wave: :wavy_dash: :waxing_crescent_moon: :waxing_gibbous_moon: :wc: :weary: :wedding: :whale: :whale2: :wheelchair: :white_check_mark: :white_circle: :white_flower: :white_large_square: :white_medium_small_square: :white_medium_square: :white_small_square: :white_square_button: :wind_chime: :wine_glass: :wink: :wolf: :woman: :womans_clothes: :womans_hat: :womens: :worried: :wrench: :x: :yellow_heart: :yen: :yum: :zap: :zero: :zzz: Unnamed: :u5272: :u5408: :u55b6: :u6307: :u6708: :u6709: :u6e80: :u7121: :u7533: :u7981: :u7a7a: `, `**[11] [Auto Linking]** #### should be turned into links: http://example.com https://example.com www.example.com www.example.com/index www.example.com/index.html www.example.com/index/sub www.example.com/index?params=1 www.example.com/index?params=1&other=2 www.example.com/index?params=1;other=2 http://example.com:8065 <http://example.com> <www.example.com> http://www.example.com/_/page www.example.com/_/page https://en.wikipedia.org/wiki/🐬 https://en.wikipedia.org/wiki/Rendering_(computer_graphics) http://127.0.0.1 http://192.168.1.1:4040 http://[::1]:80 http://[::1]:8065 https://[::1]:80 http://[2001:0:5ef5:79fb:303a:62d5:3312:ff42]:80 http://[2001:0:5ef5:79fb:303a:62d5:3312:ff42]:8065 https://[2001:0:5ef5:79fb:303a:62d5:3312:ff42]:443 http://username:[email protected] http://username:[email protected] http://username:password@[2001:0:5ef5:79fb:303a:62d5:3312:ff42]:80 [email protected] #### should be turned into links which link to the correct place: [example link](example.com) links to ` + "`" + `http://example.com` + "`" + ` [example.com](example.com) links to ` + "`" + `http://example.com` + "`" + ` [example.com/other](example.com) links to ` + "`" + `http://example.com` + "`" + ` [example.com/other_link](example.com/example) links to ` + "`" + `http://example.com/example` + "`" + ` www.example.com links to ` + "`" + `http://www.example.com` + "`" + ` https://example.com links to ` + "`" + `https://example.com` + "`" + `and not ` + "`" + `http://example.com` + "`" + ` https://en.wikipedia.org/wiki/🐬 links to the Wikipedia article on dolphins https://en.wikipedia.org/wiki/URLs#Syntax links to the Syntax section of the Wikipedia article on URLs [email protected] links to ` + "`" + `mailto:[email protected]` + "`" + ` [email link](mailto:[email protected]) links to ` + "`" + `mailto:[email protected]` + "`" + `and not ` + "`" + `http://mailto:[email protected]` + "`" + ` [other link](ts3server://example.com) links to ` + "`" + `ts3server://example.com` + "`" + `and not ` + "`" + `http://ts3server://example.com` + "`" + ` #### should not be turned into links: example.com readme.md <example.com> http:// @example.com #### should only turn the actual link into a link and not change surrounding text (http://example.com) ([email protected]) This is a sentence with a http://example.com in it. This is a sentence with a [link](http://example.com) in it. This is a sentence with a http://example.com/_/underscore in it. This is a sentence with a link (http://example.com) in it. This is a sentence with a (https://en.wikipedia.org/wiki/Rendering_(computer_graphics)) in it. This is a sentence with a http://192.168.1.1:4040 in it. This is a sentence with a https://::1 in it. This is a link to http://example.com. `, "*", "?", ".", "}{][)(><", "{}[]()<>", "qahwah ( قهوة)", "שָׁלוֹם עֲלֵיכֶם", "Ramen チャーシュー chāshū", "言而无信", "Ṫ͌ó̍ ̍͂̓̍̍̀i̊ͯ͒", "& < &qu", "' or '1'='1' -- ", "' or '1'='1' ({ ", "' or '1'='1' /* ", "1;DROP TABLE users", "<b><i><u><strong><em>", "sue@thatmightbe", "sue@thatmightbe.", "[email protected]", "[email protected]", "[email protected]", "a@b.中国", "[email protected]", "[email protected]", "[email protected]", "local@[127.0.0.1]", "!@$%^&:*.,/|;'\"+=?`~#", "'\"/\\\"\"''\\/", "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg", "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg", "ą ć ę ł ń ó ś ź ż č ď ě ň ř š ť ž ă î ø å æ á é í ó ú Ç Ğ İ Ö Ş Ü", "abcdefghijklmnopqrstuvwrxyz0123456789 -_", "Ṫ͌ó̍ ̍͂̓̍̍̀i̊ͯ͒nͧ̍̓̃͋vok̂̓ͤ̓̂ěͬ ͆tͬ̐́̐͆h̒̏͌̓e͂ ̎̊h̽͆ͯ̄ͮi͊̂ͧͫ̇̃vͥͦ́ẻͤ-͒m̈́̀i̓ͮ͗̑͌̆̅n̓̓ͨd̊̑͛̔̚ ͨͮ̊̾rͪeͭͭ͑ͧ́͋p̈́̅̚rͧe̒̈̌s̍̽ͩ̓̇e͗n̏͊ͬͭtͨ͆ͤ̚iͪ͗̍n͐͒g̾ͦ̎ ͥ͌̽̊ͩͥ͗c̀ͬͣha̍̏̉ͪ̈̚o̊̏s̊̋̀̏̽̚.͒ͫ͛͛̎ͥ", "H҉̵̞̟̠̖̗̘Ȅ̐̑̒̚̕̚ IS C̒̓̔̿̿̿̕̚̚̕̚̕̚̕̚̕̚̕̚OMI҉̵̞̟̠̖̗̘NG > ͡҉҉ ̵̡̢̛̗̘̙̜̝̞̟̠͇̊̋̌̍̎̏̿̿̿̚ ҉ ҉҉̡̢̡̢̛̛̖̗̘̙̜̝̞̟̠̖̗̘̙̜̝̞̟̠̊̋̌̍̎̏̐̑̒̓̔̊̋̌̍̎̏̐̑ ͡҉҉", "<a href=\"//www.google.com\">Teh Googles</a>", "<img src=\"//upload.wikimedia.org/wikipedia/meta/b/be/Wikipedia-logo-v2_2x.png\" />", "& < " '", " %21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D %0D %0A %0D%0A %20 %22 %25 %2D %2E %3C %3E %5C %5E %5F %60 %7B %7C %7D %7E", ";alert('Well this is awkward.');", "<script type='text/javascript'>alert('yay puppies');</script>", "http?q=foobar%0d%0aContent-\nLength:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-\nType:%20text/html%0d%0aContent-Length:%2019%0d%0a%0d%0a<html>Shazam</html>", "apos'[email protected]", "apos''''[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "tom(comment)@thatmightbe.com", "(comment)[email protected]", "\"quotes\"@thatmightbe.com", "\"\\\"(),:;<>@[\\]\"@thatmightbe.com", "a!#$%&'*+-/=?^_`{|}[email protected]", "jill@(comment)example.com", "[email protected](comment)", "ben@ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg.com", "judy@gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg.com", "ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.com", }
Strings that should pass as acceptable posts
Functions ¶
func AppendQueryParamsToURL ¶ added in v5.32.0
Append tokens to passed baseUrl as query params
func CompileGoTest ¶ added in v5.37.0
func CopyDir ¶
CopyDir will copy a directory and all contained files and directories. src must exist and dst must not exist. Permissions are preserved when possible. Symlinks are skipped.
func CopyFile ¶
CopyFile will copy a file from src path to dst path. Overwrites any existing files at dst. Permissions are copied from file at src to the new file at dst.
func CreateTestAnimatedGif ¶
func DisableDebugLogForTest ¶
func DisableDebugLogForTest()
DON'T USE THIS Modify the level on the app logger
func EnableDebugLogForTest ¶
func EnableDebugLogForTest()
DON'T USE THIS Modify the level on the app logger
func GetHostnameFromSiteURL ¶
func GetIPAddress ¶ added in v5.34.0
func GetLicenseFileFromDisk ¶
func GetLicenseFileLocation ¶
func GetLogFileLocation ¶
func GetLogSettingsFromNotificationsLogSettings ¶
func GetLogSettingsFromNotificationsLogSettings(notificationLogSettings *model.NotificationLogSettings) *model.LogSettings
func GetSanitizedClientLicense ¶ added in v5.37.0
func GetSubpathScriptHash ¶
GetSubpathScriptHash computes the script-src addition required for the subpath script to bypass CSP protections.
func GetURLWithCache ¶ added in v5.34.0
func GetURLWithCache(url string, cache *RequestCache, skip bool) ([]byte, error)
Fetch JSON data from the notices server if skip is passed, does a fetch without touching the cache
func HashSha256 ¶
func IsValidMobileAuthRedirectURL ¶ added in v5.32.0
Validates Mobile Custom URL Scheme passed during OAuth or SAML
func IsValidWebAuthRedirectURL ¶ added in v5.32.0
Validates RedirectURL passed during OAuth or SAML
func Merge ¶
func Merge(base interface{}, patch interface{}, mergeConfig *MergeConfig) (interface{}, error)
Merge will return a new value of the same type as base and patch, recursively merging non-nil values from patch on top of base.
Restrictions/guarantees:
- base and patch must be the same type
- base and patch will never be modified
- values from patch are always selected when non-nil
- structs are merged recursively
- maps and slices are treated as pointers, and merged as a single value
Note that callers need to cast the returned interface back into the original type:
func mergeTestStruct(base, patch *testStruct) (*testStruct, error) {
ret, err := merge(base, patch)
if err != nil {
return nil, err
}
retTS := ret.(testStruct)
return &retTS, nil
}
func MillisFromTime ¶
func MloggerConfigFromLoggerConfig ¶
func MloggerConfigFromLoggerConfig(s *model.LogSettings, getFileFunc fileLocationFunc) *mlog.LoggerConfiguration
func ProgressiveRetry ¶
ProgressiveRetry executes a BackoffOperation and waits an increasing time before retrying the operation.
func RandIntFromRange ¶
func RandString ¶
func RandomName ¶
func RandomText ¶
Random selection of text for post
func RemoveStringFromSlice ¶
RemoveStringFromSlice removes the first occurrence of a from slice.
func RemoveStringsFromSlice ¶ added in v5.22.0
RemoveStringsFromSlice removes all occurrences of strings from slice.
func RenderMobileAuthComplete ¶ added in v5.32.0
func RenderMobileAuthComplete(w http.ResponseWriter, redirectURL string)
func RenderMobileError ¶ added in v5.32.0
func RenderMobileMessage ¶ added in v5.32.0
func RenderMobileMessage(w http.ResponseWriter, message string)
func RenderWebAppError ¶
func RenderWebError ¶
func StringArrayIntersection ¶
func StringInSlice ¶
func StringSliceDiff ¶
func StripMarkdown ¶ added in v5.38.0
StripMarkdown remove some markdown syntax
func TimeFromMillis ¶
func TranslationsPreInit ¶
func TranslationsPreInit() error
this functions loads translations from filesystem if they are not loaded already and assigns english while loading server config
func UnzipToPath ¶ added in v5.32.0
UnzipToPath extracts a given zip archive into a given path. It returns a list of extracted paths.
func UpdateAssetsSubpath ¶
UpdateAssetsSubpath rewrites assets in the /client directory to assume the application is hosted at the given subpath instead of at the root. No changes are written unless necessary.
func UpdateAssetsSubpathFromConfig ¶
UpdateAssetsSubpathFromConfig uses UpdateAssetsSubpath and any path defined in the SiteURL.
func UpdateAssetsSubpathInDir ¶ added in v5.28.0
UpdateAssetsSubpathInDir rewrites assets in the given directory to assume the application is hosted at the given subpath instead of at the root. No changes are written unless necessary.
Types ¶
type LicenseValidatorIface ¶ added in v5.37.0
type LicenseValidatorIface interface {
LicenseFromBytes(licenseBytes []byte) (*model.License, *model.AppError)
ValidateLicense(signed []byte) (bool, string)
}
var LicenseValidator LicenseValidatorIface
type LicenseValidatorImpl ¶ added in v5.37.0
type LicenseValidatorImpl struct {
}
func (*LicenseValidatorImpl) LicenseFromBytes ¶ added in v5.37.0
func (*LicenseValidatorImpl) ValidateLicense ¶ added in v5.37.0
func (l *LicenseValidatorImpl) ValidateLicense(signed []byte) (bool, string)
type MergeConfig ¶
type MergeConfig struct {
StructFieldFilter StructFieldFilter
}
MergeConfig allows for optional merge customizations.
type RequestCache ¶ added in v5.28.0
type StructFieldFilter ¶
type StructFieldFilter func(structField reflect.StructField, base reflect.Value, patch reflect.Value) bool
StructFieldFilter defines a callback function used to decide if a patch value should be applied.